我的错误是关于main中的最后两个赋值语句。我试图通过让每个节点指向其他2个节点来创建一个基本树:左和右。我也尝试在创建它们时在n1,n2和n3前添加*,但这也不起作用......
#include <iostream>
#include <string.h>
using namespace std;
class Node{
public:
string value;
Node *left, *right;
public:
Node(string s, Node *l, Node *r){
value = s;
left = l;
right = r;
}
void display(){
cout << value << left->value << right->value;
}
};
int main(){
Node n1("this", NULL,NULL);
Node n2("is", NULL, NULL);
Node n3("next", NULL, NULL);
n1.left = n2;
n1.right = n3;
n1.display();
return 0;
}
答案 0 :(得分:4)
int main(){
Node n1("this", NULL,NULL);
Node n2("is", NULL, NULL);
Node n3("next", NULL, NULL);
n1.left = &n2;
n1.right = &n3;
n1.display();
return 0;
}
答案 1 :(得分:1)
创建如下节点时:
Node n1("this", NULL,NULL);
您在堆栈上创建它们,因此n1
是一个对象。 n1.left
是一个指针,所以你必须指定一个指针。为了获得指向对象的指针,您必须使用&
运算符,如:
n1.left = &n2;
答案 2 :(得分:1)
Node n1("this", NULL,NULL); Node n2("is", NULL, NULL); Node n3("next", NULL, NULL); n1.left = n2; n1.right = n3;
left
和right
是指针到Node实例(事实上,您将它们定义为Node *left
,Node *right
)。
所以你必须取n2和n3的地址来进行分配:
n1.left = &n2;
n1.right = &n3;
此外,请注意,在C ++ 11/14中,您应该使用nullptr
而不是NULL
。