Шаблон кода ведет себя по-разному в противоположной части - PullRequest
0 голосов
/ 20 февраля 2020

В моем main. cpp я пытался добавить элемент в дерево, используя перегрузку оператора. В то время как в оригинальной версии без перегрузки оператора, он работает для добавления элемента в дерево, в этой версии он не может добавить даже 40, второй элемент в древовидную структуру, что меня очень смущает. Я использую двойной указатель на Избегайте копирования в C ++, который должен был работать как и прежде. Пожалуйста, помогите мне выяснить проблему.

#include <iostream>
#include "Tree.hpp"
using namespace std;
int main()
{
    Tree<TreeNode> tree;
    tree + 50 + 40 + 20 + 45 + 10 + 25;
    cout << tree.search(40)->data << endl;
    return 0;
}
Tree<T>& Tree<T>::operator+(int data) {
    insertNode(&root, data, nullptr);
    return *this;
}
template<typename T>
int Tree<T>::insertNode(T **start,int data,T* ancester){
    if((*start)==nullptr){
        *start=new T(data);
        (*start)->ancester=ancester;
        return 0;
    }
    if(data>(*start)->data){
        insertNode(&(*start)->LeftChild,data,*start);
    }
    if(data<(*start)->data)
        insertNode(&(*start)->RightChild,data,*start);
}

Вот дерево проблем и функционирующее дерево:

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