C++ C+中的树实现+;:无法将节点转换为节点*
我的错误是关于main中的最后两个赋值语句。我试图创建一个基本的树,让每个节点指向另外两个节点:左和右。在创建n1、n2和n3时,我也尝试在它们前面添加*,但这也不起作用C++ C+中的树实现+;:无法将节点转换为节点*,c++,nodes,C++,Nodes,我的错误是关于main中的最后两个赋值语句。我试图创建一个基本的树,让每个节点指向另外两个节点:左和右。在创建n1、n2和n3时,我也尝试在它们前面添加*,但这也不起作用 #include <iostream> #include <string.h> using namespace std; class Node{ public: string value; Node *left, *right; public: Node(
#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;
}
#包括
#包括
使用名称空间std;
类节点{
公众:
字符串值;
节点*左,*右;
公众:
节点(字符串s,节点*l,节点*r){
值=s;
左=l;
右=r;
}
无效显示(){
cout当您创建如下节点时:
Node n1("this", NULL,NULL);
您在堆栈上创建它们,因此n1
是一个对象。n1.left
是一个指针,因此您也必须为其分配一个指针。为了获得指向对象的指针,您必须使用和操作符,如:
n1.left = &n2;
创建节点时,如:
Node n1("this", NULL,NULL);
您在堆栈上创建它们,因此n1
是一个对象。n1.left
是一个指针,因此您也必须为其分配一个指针。为了获得指向对象的指针,您必须使用和操作符,如:
n1.left = &n2;
left
和right
是指向节点实例的指针(实际上,您将它们定义为Node*left
,Node*right
)
因此,您必须使用n2和n3的地址来完成作业:
n1.left = &n2;
n1.right = &n3;
此外,请注意,在C++11/14中,应该使用NULL ptr
而不是NULL
left
和right
是指向节点实例的指针(实际上,您将它们定义为Node*left
,Node*right
)
因此,您必须使用n2和n3的地址来完成作业:
n1.left = &n2;
n1.right = &n3;
此外,请注意,在C++11/14中,您应该使用nullptr
而不是NULL
您是否尝试过n1.left=&n2;@ivanw很酷!谢谢!您能告诉我*和&?我以为它们都是指针或引用了内存位置…&返回while*deferen的地址吗ces或声明一个指针。另外,无需提及public
两次。只是一些小事情。好的,谢谢大家:)你们试过n1.left=&n2;@ivanw很酷,很有效!谢谢!你能告诉我*和&?我以为他们都是指针或引用了内存位置…&返回wh的地址吗ile*遵从或声明一个指针。另外,不需要再提到public
。只是一些小事情。好的,谢谢大家:)哦,好的。是因为NULL只是指某个东西的值,而nullptr实际上意味着它不指向任何东西吗?更新:我只是尝试了nullptr,但它说的是'nullptr'“未在该范围内声明…请阅读”“。哦,好的。这是因为NULL只是指某个对象的值,而nullptr实际上意味着它不指向任何对象吗?更新:我只是尝试执行nullptr,但它表示“nullptr”未在该范围内声明…请阅读”“。