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:不,请不要猜了。只要改变一下,一切都会好起来的。