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

时间:2017-03-12 18:48:26

标签: c++ compiler-errors binary binary-tree nodes

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

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

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

  

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

     

没有用于调用Node :: Node(int)

的匹配函数

我如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

我无法理解为什么要尝试以这种方式创建对象。 结构也可以有构造函数,但在您的情况下,您的数据是公共的,这意味着您可以从main初始化它们。

无论如何,如果你想使用带有一些参数的构造函数,你必须实现一个。这就是你得到这些错误的原因。

示例:

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

答案 1 :(得分:0)

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

可能会有所帮助

答案 2 :(得分:0)

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

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