我有这个结构:

struct Node{
    int key;
    Node *parent;
    Node *left;
    Node *right;
    Node(Node *p, Node *l, Node *r){
        parent = p;
        left = l;
        right = r;
    }
};


然后我有以下内容,其中currentNode*

current->left = new Node(current, new Node, new Node);


但是我明白了

error: no matching constructor for initialization of 'Node'
 current->left = new Node(current, new Node, new Node);
                                       ^


有什么问题? new Node是否不返回指向未初始化的Node的指针,该指针应满足构造函数的要求?

最佳答案

由于您为Node定义了构造函数,因此它不会生成隐式默认构造函数。通过不带任何参数调用new Node,您正在尝试调用默认构造函数。


  new Node是否不返回指向未初始化的Node的指针?


不会。它将构造一个新的Node并返回指向它的指针。仅将nullptr作为Node*参数传递可能更有意义。

new Node(current, nullptr, nullptr);

关于c++ - 用一些空指针初始化节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35687141/

10-17 00:20