C++ 左值要求为一元'&';C+中的操作数错误+;
我试图通过引用将一个值传递给另一个指针,但是我得到了一个错误:一元'&'操作数需要左值 以下是我的尝试:C++ 左值要求为一元'&';C+中的操作数错误+;,c++,C++,我试图通过引用将一个值传递给另一个指针,但是我得到了一个错误:一元'&'操作数需要左值 以下是我的尝试: Node<Item,Key> *root; Node<Item, Key> *x= root; x= &x->getLeft(); // it does not let me use & 节点*root; 节点*x=根; x=&x->getLeft();//它不让我使用& 以下是getLeft()的getter: 模板 Node*Node
Node<Item,Key> *root;
Node<Item, Key> *x= root;
x= &x->getLeft(); // it does not let me use &
节点*root;
节点*x=根;
x=&x->getLeft();//它不让我使用&
以下是getLeft()的getter:
模板
Node*Node::getLeft(){
左转;
}
如果有人能认出我的错误,我将不胜感激。
提前谢谢。你的意思是:
x = x->getLeft();
getLeft()
的返回值已经是指针。您的意思是:
x = x->getLeft();
getLeft()
的返回值已经是一个指针。x->getLeft()
返回一个节点*
-它已经是一个指针。如果您获取它的地址,您将得到一个节点**
,这不是您可以分配给x
不过,你似乎遇到了另一个问题。您的根
指针未初始化。然后将其复制到x
并尝试通过间接方式访问成员(->
)。在执行此操作之前,您需要使根节点
和x
指向某个对象。x->getLeft()
返回一个节点*
-它已经是一个指针。如果您获取它的地址,您将得到一个节点**
,这不是您可以分配给x
不过,你似乎遇到了另一个问题。您的
根
指针未初始化。然后将其复制到x
并尝试通过间接方式访问成员(->
)。在这样做之前,你需要让root
和x
指向某个地方。这个错误很容易被发现,但令人困惑的是你为什么会犯这个错误。那么请告诉我,你认为&
是为了什么?我同意@KerrekSB:请告诉我为什么。这个错误很容易被发现,但令人困惑的是你为什么会犯这个错误。那么请告诉我,你认为&
是为了什么?我同意@KerrekSB:请告诉我为什么。那么,我应该更改getter的return语句以便能够使用:x=&x->getLeft()@user3136756:你为什么想把&
放在那里?@user3136756:不,请不要猜了。只要做一个更改,一切都会好起来。那么,我是否应该更改getter的return语句,以便能够使用:x=&x->getLeft()@user3136756:你为什么想把&
放在那里?@user3136756:不,请不要猜了。只要改变一下,一切都会好起来的。