我有一個類,其中一個私有屬性是類的一個實例。在Java(因爲我已經習慣了Java的),這看起來像:修改自己類的本地實例
class Node {
private Node Pi;
}
現在我在C++寫這個,當我試圖做同樣的事情,我得到一個紅色下劃線(I」 m使用Visual C++ 2010 Express),「不完整類型不允許」。
class Node {
private:
Node Pi; //Incomplete type is not allowed
};
我試圖將其更改爲Node Pi(void);
,但爲什麼我嘗試使用修改這個屬性我得到另一個功能「的表達式必須修改的左值」修復此。
class Node {
private:
Node Pi(void);
public:
void setPi(Node n);
};
void Node::setPi(Node n) {
Pi = n; //Node Node::Pi() expression must be a modifiable lvalue
}
通常在Java中沒有問題,所以我的問題是,我該如何實現這個?我不是C++的初學者,但我還沒有寫過一段時間。
class Node {
private Node Pi;
void setPi(Node n) {
this.Pi = n;
}
}
「不完全類型不允許」意味着你不能創建尚未完全定義一個類的實例。在編譯器讀取其大括號和分號之前,類不是「完整的」。一個類不能包含自己的一個實例;這將是一個循環定義。 – Wyzard