繁体   English   中英

关于C ++中的节点的错误

[英]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的变量。 这是您打算在该声明之后使用的类型的名称。 因此,您需要通过适当地使用structclass来指定要引用的类型,而不是变量。

node *node = new struct node;
                 ^^^^^^

更好的解决方案是为变量使用其他名称。

node* n = new node;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM