Я пытаюсь передать по ссылке значение другому указателю, однако я получаю ошибку: lvalue требуется как унарный операнд "&".
Вот мои попытки:
Node<Item,Key> *root;
Node<Item, Key> *x= root;
x= &x->getLeft(); // it does not let me use &
Следующим является мой getter для getLeft():
template<typename Item, typename Key>
Node<Item, Key>* Node<Item, Key>::getLeft() {
return left;
}
Я ценю, если кто-то может определить мою ошибку. Заранее спасибо.
Ты имеешь в виду:
x = x->getLeft();
Возвращаемое значение getLeft()
уже является указателем.
&
там?
x->getLeft()
возвращает Node<Item, Key>*
- это уже указатель. Если вы берете его адрес, вы получите Node<Item, Key>**
, который не является тем, который вы можете назначить x
.
Однако вы столкнулись с другой проблемой. root
указатель не инициализирован. Затем вы копируете его на x
и пытаетесь получить доступ к члену по косвенности (->
). Вам нужно будет сделать root
и x
указать что-то прежде, чем вы это сделаете.
&
для чего?