[英]error about a node in C++
我收到此错误,我不知道如何解决。
error: must use 'struct' tag to refer to type 'node' in this scope
node *node = new node;
错误所在的代码。
//New empty tree
struct node *newTreeNode(int data)
{
//New tree nodes
node *node = new node;
//New data node
node->data = data;
//New left node
node->left = nullptr;
//New right node
node->right = nullptr;
return node;
}
^
此错误来自于奇怪的情况,该异常声明了一个与它的类型同名的对象:
node *node = new node;
这不仅使程序的读者非常困惑,而且现在在RHS中,单词node
表示对象,而不是类型。 因此, new node
无效。
该错误消息谨通知您,可以通过在node
之前编写struct
来使node
引用该类型 :
node* node = new struct node;
之所以起作用是因为,当T
是类类型时, struct T
始终表示该类类型T
而不能表示其他任何内容。
但是,老实说, 根本不要这样做 。 使用更好的名字。
您已经声明了一个名为node
的变量。 这是您打算在该声明之后使用的类型的名称。 因此,您需要通过适当地使用struct
或class
来指定要引用的类型,而不是变量。
node *node = new struct node;
^^^^^^
更好的解决方案是为变量使用其他名称。
node* n = new node;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.