Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中的树实现+;:无法将节点转换为节点*_C++_Nodes - Fatal编程技术网

C++ C+中的树实现+;:无法将节点转换为节点*

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(

我的错误是关于main中的最后两个赋值语句。我试图创建一个基本的树,让每个节点指向另外两个节点:左和右。在创建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;
}
#包括
#包括
使用名称空间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”未在该范围内声明…请阅读”“。