我对此代码有错误,我试着让它运行我做错了 我得到一个错误说: 请指导我正确答案
错误:原型为' 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;
}
答案 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*