错误:'void TNode::inititTree(TNode*)' 的原型与类 'TNode' 中的任何原型都不匹配

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

本文关键字:TNode 原型 任何 不匹配 void inititTree 错误      更新时间:2023-10-16

我在此代码中有一个错误,我试图让它运行我做错了什么我有一个错误说:请指导我纠正答案

错误:'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;
}

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

TNode* inititTree(TNode*);

但是您的定义是

void TNode::inititTree(TNode *MyTree)

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

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