C++中的树实现:无法将节点转换为节点*
Tree implementation in C++: Cannot convert Node to Node*
我的错误是关于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;
}
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;
}
当您创建如下节点时:
Node n1("this", NULL,NULL);
您在堆栈上创建它们,因此n1
是一个对象。 n1.left
是一个指针,所以你也必须分配一个指向它的指针。为了获取指向对象的指针,您必须使用 &
运算符,例如:
n1.left = &n2;
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
.
相关文章:
- 如何将节点 V8 字符串转换为 C++ 字符串
- 没有从"树节点"到"树节点*"的可行转换
- 将节点数组(可变长度)转换为常量浮点**以调用opencv.calcHist
- 正在初始化:无法从'_Ty*'转换为 List<int,std::分配器<节点<T>>>:节点*
- 错误:无法从节点*转换为节点 c++?
- 指针取消引用:无法将“节点**”转换为“节点*”
- 无法将参数从"this"转换为节点<T>*
- 用指针 *将C 转换为JavaScript(节点)
- 如何将XML节点数据转换为QT中的字符串
- 如何将节点插件持久<function>转换为本地<function>?
- 在从通用树转换的二进制树中查找节点的父
- 如何使用指针C++将类的析构函数转换为另一个类?类似于单向列表容器类和节点类
- 将阵列转换为节点
- 转换为模板类(节点)
- 如何将列表'node_ptr'转换为我自己的节点类型
- 错误 C2440:"=":无法从"列表节点 *"<T>转换为"列表节点<T> *"
- 在C++中实现图形节点时将 C# 类转换为C++
- 无法在赋值中将"列表节点**"转换为"列表节点*"
- 用于c++的XML解析器,它将XML节点转换为c++对象
- C++中的树实现:无法将节点转换为节点*