Попытка перегрузить оператор присваивания дерева двоичного поиска - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь перегрузить и назначить оператор, но программа продолжает падать, вот что я попробовал. Оператор присваивания перегружен в строке 238. Код Любая помощь оценивается

1 Ответ

0 голосов
/ 01 ноября 2018

Честно говоря, вам, вероятно, повезло, что ошибка показывает себя.

BinaryTree *newTree; newTree->insert(0);

Создает указатель на BinaryTree, который ничего не будет указывать, а затем вы вызываете разыменование его с помощью оператора ->, что приводит к неопределенному поведению в c ++.

Если предположить, что все остальное в вашей функции корректно (включая реализацию других функций), то правильный путь будет таким, основанным на вашем текущем коде (обратите внимание, что функция возвращает ссылку):

BinaryTree & BinaryTree::operator=(const BinaryTree &myTree)
{
    this->insert(0);
    this->FillTree(*this, myTree.root);
    return *this;
}

НО, я нахожу весьма вероятным, что в вашем коде есть другие ошибки, и вам следует воспользоваться советом других комментаторов и сначала реализовать конструктор копирования.

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