C++错误:字段具有不完整的类型 - 宣布它自己的类对象

C++错误:字段具有不完整的类型 - 宣布它自己的类对象

问题描述:

我是新的C++编程。这里是我的代码:C++错误:字段具有不完整的类型 - 宣布它自己的类对象

#ifndef NODE_H 
#define NODE_H  

class Node 
{ 
    public: 
     Node(); 
     Node(int); 
     virtual ~Node(); 
     Node(const Node& other); 

     int getValue() { return value; } 
     void setValue(int val) { value = val; } 
     Node getPrev() { return prev; } 
     void setPrev(Node val) { prev = val; } 
     Node getNext() { return next; } 
     void setNext(Node val) { next = val; } 

    private: 
     int value; //!< Member variable "value" 
     Node prev; //!< Member variable "prev" 
     Node next; //!< Member variable "next" 
}; 

#endif // NODE_H 

它说:

error field 'prev' has incomplete type 
error field 'next' has incomplete type 

如果我使用指针/引用,该程序工作正常。为什么这个机制存在?如何做到没有指针/参考? 感谢您的回复。

+0

如果每个'Node'包含'int'和两个'Node's,那么它的规模将是无限的。这可能不是你想要的。 – Quentin

+0

*“如何做没有指针/引用?” *长话短说:你不能。 –

+0

替代欺骗:https://stackoverflow.com/questions/6349822/incomplete-type-in​​-class-which-has-a-member-of-the-same-type-of-the-class-itse –

类没有完全确定,直到闭括号。在此之前,您无法定义类的对象。一个主要的原因是对象的大小尚未知道,所以编译器不知道为成员变量分配多少内存。

当您使用指针或引用类,编译器会知道的指针或引用的内存占用,因为它是无关的实际类的大小。