使用括号会在声明新节点时会产生错误

using parenthesis gives error while declaring new Node

本文关键字:节点 错误 新节点 声明      更新时间:2023-10-16
struct Node{
int data;
bolum *right;
bolum *left;
bolum *up;
};
int main(){
Node *root;
root = new Node(5 , NULL , NULL);
}

此代码给出了这两个错误:

新的初始化器表达式列表被视为复合表达式 [-fpermissive]

无匹配的函数呼叫'node :: node(int)

如何解决此问题?

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

无论如何,如果要使用具有某些参数的构造函数,则必须实现一个参数。这就是为什么您会遇到这些错误。

示例:

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

Node *root; root = new Node; *root={5 , NULL , NULL,NULL};

可能会有所帮助

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

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