尝试创建简单的父/子节点类但遇到不完整类型不允许错误。为什么?
class Node {
public:
Node ParentNode; //Error on this line
string NodeName;
Node(Node *node) : ParentNode(*node) {
}
};
答案 0 :(得分:0)
您正在尝试:
Node ParentNode; //Error on this line
但是Node此时并不是一个完整的类型(你实际上是在这一点定义它),一个结构不能包含它自己的实例,它可以包含一个指针或对自身实例的引用,但不包含实际实例。毕竟,如果这种反复的遏制被允许,它会结束吗?
答案 1 :(得分:0)
该错误暗示了在定义类时类的定义是不完整的事实。
对象不能包含自己类型的实例 - 它将无限大。
你想要
Node* ParentNode;
和
Node(Node *node) : ParentNode(node)