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
如果我使用指针/引用,该程序工作正常。为什么这个机制存在?如何做到没有指针/参考? 感谢您的回复。
答
类没有完全确定,直到闭括号。在此之前,您无法定义类的对象。一个主要的原因是对象的大小尚未知道,所以编译器不知道为成员变量分配多少内存。
当您使用指针或引用类,编译器会知道的指针或引用的内存占用,因为它是无关的实际类的大小。
如果每个'Node'包含'int'和两个'Node's,那么它的规模将是无限的。这可能不是你想要的。 – Quentin
*“如何做没有指针/引用?” *长话短说:你不能。 –
替代欺骗:https://stackoverflow.com/questions/6349822/incomplete-type-in-class-which-has-a-member-of-the-same-type-of-the-class-itse –