我有兩個不同的類,如下所示。構造不同類型的n元樹C++
Class2{
public:
Class2();
private:
int a;
}
Class1{
public:
Class1();
private:
Class2 foo;
}
現在我想構造一棵樹,其中一些節點是Class1,其他一些是Class2。可能嗎 ?
編輯
Class1的將是永遠的Class2的兒童或者反之亦然
我有兩個不同的類,如下所示。構造不同類型的n元樹C++
Class2{
public:
Class2();
private:
int a;
}
Class1{
public:
Class1();
private:
Class2 foo;
}
現在我想構造一棵樹,其中一些節點是Class1,其他一些是Class2。可能嗎 ?
編輯
Class1的將是永遠的Class2的兒童或者反之亦然
或許可以考慮使用typed-union?
E.g.
const int TYPE_CLASS1 = 1;
const int TYPE_CLASS2 = 2;
struct Node {
int type;
union obj {
Class1 c1;
Class2 c2;
}
};
我需要將它們作爲分層次序存儲 – eday
@eday右鍵,然後只需向樹中的正常節點添加字段即可。 –
「Class1將永遠是Class2的孩子,反之亦然」。只要製作一個父類型的樹? – deviantfan
你將如何訪問節點?你不能說'node-> a'或'node-> foo',因爲你不知道'node'是什麼類型。一個可能的答案是保存一個標籤,說明它是什麼類型。另一個是使用虛擬功能。另一種是隻使用兩種不同的樹,而另一種則總是存儲這兩種樹。沒有通用的答案,這個決定取決於你正試圖解決的具體問題。 – nwp
您發佈的代碼中沒有明顯的父母/子女關係。你有兩個獨立的類,其中一個類有Class2的成員。我想你應該在嘗試這樣做之前學習更多的C++。 – kfsone