Node* node;
*node = nullptr;
Run Code Online (Sandbox Code Playgroud)
报告错误:
error: no viable overloaded '='
*node = nullptr;
Run Code Online (Sandbox Code Playgroud)
但
Node* node;
*node = NULL;
Run Code Online (Sandbox Code Playgroud)
是正确的 ?
最有可能的是一个Node可以用int.由于null被定义为等于的int常量0,因此您错误地调用了节点构造函数并将其分配给节点.
正如Sid S所说,node = nullptr是正确的表达方式.
NULL 很可能是一个旧的宏,继承自C世界,并定义为0.
所以在第二种情况下发生的事情是将数字 0 分配给类型的变量Node.而在第一种情况下,指定了指针(nullptr).编译器确定这是错误的,因为*node它不是指针.这意味着它会抱怨.
它是否会抱怨分配数字0 Node将取决于赋值运算符Node是否已经过载以接受数字.或者是否有一个数字的隐式转换/构造函数Node.