lvalue требуется как унарный '&' ошибка операнда в C ++

0

Я пытаюсь передать по ссылке значение другому указателю, однако я получаю ошибку: 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;
}

Я ценю, если кто-то может определить мою ошибку. Заранее спасибо.

  • 4
    Эту ошибку достаточно легко обнаружить, но что сбивает с толку то, почему вы сделали ошибку. Так что, пожалуйста, расскажите, для чего, по вашему мнению, & для чего?
  • 0
    Я согласен с @KerrekSB: пожалуйста, расскажите, почему.
Теги:

2 ответа

4

Ты имеешь в виду:

x = x->getLeft();

Возвращаемое значение getLeft() уже является указателем.

  • 0
    Затем я должен изменить инструкцию возврата моего метода получения, чтобы иметь возможность использовать: x = & x-> getLeft (); ?
  • 0
    @ user3136756: почему вы хотите, чтобы & там?
Показать ещё 1 комментарий
0

x->getLeft() возвращает Node<Item, Key>* - это уже указатель. Если вы берете его адрес, вы получите Node<Item, Key>**, который не является тем, который вы можете назначить x.

Однако вы столкнулись с другой проблемой. root указатель не инициализирован. Затем вы копируете его на x и пытаетесь получить доступ к члену по косвенности (->). Вам нужно будет сделать root и x указать что-то прежде, чем вы это сделаете.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню