我有这个结构:
struct Node{
int key;
Node *parent;
Node *left;
Node *right;
Node(Node *p, Node *l, Node *r){
parent = p;
left = l;
right = r;
}
};
然后我有以下内容,其中
current
是Node*
: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/