错误:原型为' void TNode :: inititTree(TNode *)'与班级中的任何一个都不匹配' TNode'

时间:2017-04-18 07:44:50

标签: c++

我对此代码有错误,我试着让它运行我做错了 我得到一个错误说: 请指导我正确答案

  

错误:原型为' void TNode :: inititTree(TNode *)'不匹配   任何课程' 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;
}

2 个答案:

答案 0 :(得分:-1)

正是它所说的:定义的签名与声明的签名不符。你的声明是

TNode* inititTree(TNode*);

但你的定义是

void TNode::inititTree(TNode *MyTree)

您声明函数返回TNode*,但在您的定义中它是void。因此,要么将声明更改为void,要么将定义更改为TNode*(并使函数返回TNode*)。

答案 1 :(得分:-1)

您已在类中声明方法TNode* inititTree(TNode*)并定义了方法void TNode::inititTree(TNode *MyTree),因此声明不匹配。您应该将声明更改为返回一个的void或更改定义,以便返回TNode*