2015-06-10 2 views
-3

Я получаю вышеуказанную ошибку и ее указание на мой вызов для добавления (root, node). Что означает эта ошибка? Я попробовал переместить личное дополнение к вершине, но это тоже не работает. Кроме того, он не может быть потому, что его частный, потому что он в том же классе, не так ли?C++: нет соответствующего вызова функции

class Tree{ 

    public: 
     Node *root; 
     Tree(Node *r){ 
      root = r; 
     } 

     void add(Node node){ 
      add(root, node);//error here 
     } 
    private: 
     void add(Node parent, Node node){ 

      if(parent == root && root == nullptr){ 
       root = node; 
      } 

      if(parent == nullptr){ 
       parent(node->value, nullptr, nullptr); 
      } 
      else if(node > parent){ 
       add(parent->right, node); 
      } 
      else { 
       add(parent->left, node); 
      } 
+0

nullptr проверяет указатель, ваши параметры нет указателей! Это ошибка typo/copy-paste-ошибка или (часть) проблемы? – Sorona

+0

else if (node> parent) странно .. – JerryGoyal

+0

@JerryGoyal Похоже, что они пытаются отсортировать сортировку, и они должны иметь 'else if (node-> value> parent-> value)', они имеют код число других вопросов тоже – CoryKramer

ответ

2

Ваша функция нужна подпись,

void add(Node* parent, Node* node) 

Обратите внимание, что это Node* вместо Node. То же самое относится и к public перегрузке этой функции

void add(Node* node) 

Это очевидно, потому что 1) вы делаете сравнение с nullptr и 2) вы держите разыменования переменных с -> вместо .

0

CoryKramer пятнистого некоторые ошибки, я также добавлю это.

вы не можете сравнить указатели, так что должны быть данные:

else if(node->value > parent->value){ 
      add(parent->right, node); 
Смежные вопросы