不允许使用不完整的类型

use*_*593 3 c++

尝试创建简单的父/子节点类,但遇到不允许不完整类型的错误。为什么?

class Node {
public:
    Node ParentNode;  //Error on this line
    string NodeName;


    Node(Node *node) : ParentNode(*node) {

    }
};
Run Code Online (Sandbox Code Playgroud)

Sor*_*tir 6

你在尝试:

Node ParentNode;  //Error on this line
Run Code Online (Sandbox Code Playgroud)

但此时 Node 还不是一个完整的类型(实际上您此时正在定义它),结构不能包含其自身的实例,它可以包含对其自身实例的指针或引用,但不能包含实际实例。毕竟,如果允许这种递归遏制,它会在哪里结束?