好的,所以我正在寫一個簡單的方案解釋器(ala Bootstrap Scheme),但在C++ 11中(但這個問題並不是特定於C++ 11)。我想爲我的班級「對象」提出一個合理的表單。目前,我的佈局是這樣的:一個類可以包含一個自己的列表嗎?
typedef union {
int i;
double d;
char c;
} value;
class Object {
public:
//Constructors and stuffs...
private:
obj_type type;
value val;
list<Object> l;
};
我試圖把名單中的聯合(這是在類中),但編譯器抱怨。我的問題是這樣的:是否有可能在課堂上列出一個班級名單?我想我應該可以,因爲默認情況下,列表中將沒有對象(所以沒有無限增長)。其次,如果這是不可能的,那麼對於如何實現這一點,是否還有其他建議?我知道我可以實現列表C風格(帶指針),但STL列表使事情變得更簡單。
更新:好的,所以指針看起來像一個不錯的解決方案。我不想使用Boost,因爲這是一個我還沒有廣泛使用的庫,我將這部分作爲練習來獲得對STL的更多掌握。
更新2:新代碼如下所示:
class Object {
//...
private:
obj_type type;
int i;
double d;
char c;
deque<Object*> l;
};
但我仍然得到編譯器錯誤:‘deque’ does not name a type
。
爲什麼不使用指針列表呢? –
也許boost :: ptr_list(http://www.boost.org/doc/libs/1_48_0/libs/ptr_container/doc/ptr_list.html)? – Pablo
所有類都包含一個類嗎? –