C++ 声明新节点时使用括号会出错

C++ 声明新节点时使用括号会出错,c++,compiler-errors,binary,binary-tree,nodes,C++,Compiler Errors,Binary,Binary Tree,Nodes,此代码给出了以下两个错误: 作为复合表达式处理的新初始值设定项表达式列表 [-fpermissive] 对“Node::Node(int)”的调用没有匹配的函数 如何解决此问题?Node*root; 根=新节点; *root={5,NULL,NULL,NULL} 可能会有帮助Node*root; 根=新节点; *root={5,NULL,NULL,NULL} 可能会有帮助,我不明白你为什么要用这种方式创建对象。 结构也可以有构造函数,但在您的情况下,您的数据是公共的,这意味着您可以从主节点初始化

此代码给出了以下两个错误:

作为复合表达式处理的新初始值设定项表达式列表 [-fpermissive]

对“Node::Node(int)”的调用没有匹配的函数

如何解决此问题?

Node*root;
根=新节点;
*root={5,NULL,NULL,NULL}

可能会有帮助

Node*root;
根=新节点;
*root={5,NULL,NULL,NULL}


可能会有帮助,我不明白你为什么要用这种方式创建对象。 结构也可以有构造函数,但在您的情况下,您的数据是公共的,这意味着您可以从主节点初始化它们

无论如何,如果你想使用一个带有一些参数的构造函数,你必须实现一个。这就是为什么你会犯这些错误

例如:

struct Node{
int data;
bolum *right;
bolum *left;
bolum *up;
};

int main(){
Node *root;
root = new Node(5 , NULL , NULL);
}

我不明白你为什么要用这种方式创建一个对象。 结构也可以有构造函数,但在您的情况下,您的数据是公共的,这意味着您可以从主节点初始化它们

无论如何,如果你想使用一个带有一些参数的构造函数,你必须实现一个。这就是为什么你会犯这些错误

例如:

struct Node{
int data;
bolum *right;
bolum *left;
bolum *up;
};

int main(){
Node *root;
root = new Node(5 , NULL , NULL);
}

也可以在新构造函数中使用整洁的初始化列表:

Node (int data2,Node * p1, Node *p2,Node * p3){
    data = data2;
    right = p1;
    left = p2;
    up = p3;
} 

也可以在新构造函数中使用整洁的初始化列表:

Node (int data2,Node * p1, Node *p2,Node * p3){
    data = data2;
    right = p1;
    left = p2;
    up = p3;
} 

节点
没有接受三个参数的构造函数。不清楚您希望
新节点(5,NULL,NULL)
能做什么
root=新节点{5,NULL,NULL}应该可以工作(注意大括号而不是括号);这将执行聚合初始化。@Igor Tandetnik我可以使用struct类型的构造函数吗?对不起,我的知识太少了。是的,你可以
struct
只是一个其成员默认为公共的类。
Node
没有包含三个参数的构造函数。不清楚您希望
新节点(5,NULL,NULL)
能做什么
root=新节点{5,NULL,NULL}应该可以工作(注意大括号而不是括号);这将执行聚合初始化。@Igor Tandetnik我可以使用struct类型的构造函数吗?对不起,我的知识太少了。是的,你可以
struct
只是一个其成员默认为公共的类。