C++ 错误:字段类型不完整 - 声明它是自己的类对象

ime*_*tuk 2 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
Run Code Online (Sandbox Code Playgroud)

它说 :

error field 'prev' has incomplete type
error field 'next' has incomplete type
Run Code Online (Sandbox Code Playgroud)

如果我使用指针/引用,程序运行良好。为什么会存在这种机制?如何在没有指针/引用的情况下做到这一点?感谢您的答复。

Som*_*ude 7

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

当您使用类的指针或引用时,编译器将知道指针或引用占用了多少内存,因为它与实际类的大小无关。