2017-04-18 26 views
-2

我有這個代碼的錯誤我試圖讓它運行我做錯了 我得到一個錯誤說: 請指引我正確的答案錯誤:'void TNode :: inititTree(TNode *)'的原型與'TNode'中的任何類型不匹配'

error: prototype for 'void TNode::inititTree(TNode*)' does not match any in class 'TNode'

#include <iostream> 
using namespace std; 

class TNode{ 
    private: 
     int info; 
     TNode *left; 
     TNode *right; 
     char ch; 
    public: 
     TNode* inititTree(TNode*); 
     TNode* addNode(TNode*, int val); 

}; 

void TNode::inititTree(TNode *MyTree){ 
    MyTree = new TNode;  
    cin>> ch; 
    MyTree->info = ch; 
    MyTree->left = Null; 
    MyTree->right= Null; 
    cout>> MyTree->info; 
} 

void TNode::addNode(TNode *MyTree, int value){ 
    TNode TmpN = new TNode; 
    TmpN->info = value; 

    TNode *p = MyTree; 
    TNode *c = MyTree; 

    while (c!= Null) 
    { 
     if(TmpN->info < p->info){ 
      c = p->left; 
      if (p->left != Null){ 
       p=p->left; 
      } 
     } 
     else{ 
      c = p->right; 
      if (p->right != Null){ 
       p=p->right; 
      } 
     } 
    } 

    if (TmpN->info < p->info){ 
     p->left = TmpN; 
    }else{ 
     p->right = TmpN; 
    } 
} 

int main(int argc, char** argv) { 

    TNode *MyTree; 
    MyTree->inititTree(); 
    return 0; 
} 
+0

這與C標記無關。 –

回答

0

這正是它說:該定義的簽名不匹配的聲明的。你的聲明是

TNode* inititTree(TNode*); 

但你的定義是

void TNode::inititTree(TNode *MyTree) 

你聲明你的函數返回一個TNode*,但在你的定義是void。因此,將聲明更改爲void或將定義更改爲TNode*(並使該函數返回TNode*)。

0

你已經在你的類中聲明瞭方法TNode* inititTree(TNode*),並且定義了一個方法void TNode::inititTree(TNode *MyTree),所以它是一個聲明不匹配。您應該將聲明更改爲返回一個空格或更改定義,以便返回TNode*

相關問題