Почему я не могу напрямую использовать возвращенный указатель в качестве параметра при вызове функции вставки? - PullRequest
0 голосов
/ 15 апреля 2019

Вот прототип функции:

void BinaryDimonTree::insert(int x, int y, int level, TreeNode *&cur)

в функции, я попытался вызвать:

insert(x, y, ++level, cur->getLeftChild());

и вот getLeftChild:

TreeNode* TreeNode::getLeftChild() const {
    return this->left;
}

Затем он сообщает об ошибке:

ни один экземпляр перегруженной функции "BinaryDimonTree :: insert" не соответствует списку аргументов - типы аргументов: (int, int, int, TreeNode *)

Если я изменю свой код следующим образом:

TreeNode *child = cur->getLeftChild();
insert(x, y, ++level, child);

Никаких ошибок не будет.

Интересно, почему возникает эта проблема и как ее решить, если яхотите напрямую использовать возвращаемое значение функции в качестве параметра?

Большое спасибо!

1 Ответ

2 голосов
/ 15 апреля 2019

Последний аргумент вашей функции insert является неконстантной ссылкой на указатель.В вызове:

insert(x, y, ++level, cur->getLeftChild());

последний аргумент является временным значением типа TreeNode *, которое не может быть привязано к TreeNode * &.Вы можете найти хорошее объяснение здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...