我是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 :(得分:3)
在关闭括号之前,该类尚未完全定义。在此之前,您无法定义类的对象。一个主要原因是对象的大小尚不清楚,因此编译器不知道要为成员变量分配多少内存。
当您使用指针或类的引用时,编译器将知道指针或引用占用了多少内存,因为它与实际类的大小无关。