2016-11-30 37 views
1

我是新的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 –

回答

3

類沒有完全確定,直到閉括號。在此之前,您無法定義類的對象。一個主要的原因是對象的大小尚未知道,所以編譯器不知道爲成員變量分配多少內存。

當您使用指針或引用類,編譯器會知道的指針或引用的內存佔用,因爲它是無關的實際類的大小。

相關問題