不允许使用不完整的类型

Incomplete Type Is Not Allowed

本文关键字:类型 用不完 不允许      更新时间:2023-10-16

试图以简单的父/子节点类创建创建,但不允许进入不完整的类型。为什么?

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

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

您正在尝试:

Node ParentNode;  //Error on this line

,但节点目前不是一个完整的类型(实际上您正在定义它),结构不能包含本身的实例,它可以包含指针或对本身实例的引用,但不能包含一个实际的实例实例。毕竟,如果允许这样的递归遏制,它将在哪里结束?

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

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

你想要

Node* ParentNode;

Node(Node *node) : ParentNode(node)