不允许不完整的类型

时间:2017-12-12 20:37:42

标签: c++

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

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


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

    }
};

2 个答案:

答案 0 :(得分:0)

您正在尝试:

Node ParentNode;  //Error on this line

但是Node此时并不是一个完整的类型(你实际上是在这一点定义它),一个结构不能包含它自己的实例,它可以包含一个指针或对自身实例的引用,但不包含实际实例。毕竟,如果这种反复的遏制被允许,它会结束吗?

答案 1 :(得分:0)

该错误暗示了在定义类时类的定义是不完整的事实。

对象不能包含自己类型的实例 - 它将无限大。

你想要

Node* ParentNode;

Node(Node *node) : ParentNode(node)