2014-06-20 19 views
0

我有兩個不同的類,如下所示。構造不同類型的n元樹C++

Class2{ 

public: 
Class2(); 

private: 
    int a; 

} 

Class1{ 
    public: 
     Class1(); 
    private: 
     Class2 foo; 
} 

現在我想構造一棵樹,其中一些節點是Class1,其他一些是Class2。可能嗎 ?

編輯

Class1的將是永遠的Class2的兒童或者反之亦然

+0

「Class1將永遠是Class2的孩子,反之亦然」。只要製作一個父類型的樹? – deviantfan

+0

你將如何訪問節點?你不能說'node-> a'或'node-> foo',因爲你不知道'node'是什麼類型。一個可能的答案是保存一個標籤,說明它是什麼類型。另一個是使用虛擬功能。另一種是隻使用兩種不同的樹,而另一種則總是存儲這兩種樹。沒有通用的答案,這個決定取決於你正試圖解決的具體問題。 – nwp

+0

您發佈的代碼中沒有明顯的父母/子女關係。你有兩個獨立的類,其中一個類有Class2的成員。我想你應該在嘗試這樣做之前學習更多的C++。 – kfsone

回答

1

或許可以考慮使用typed-union

E.g.

const int TYPE_CLASS1 = 1; 
const int TYPE_CLASS2 = 2; 

struct Node { 
    int type; 
    union obj { 
     Class1 c1; 
     Class2 c2; 
    } 
}; 
+0

我需要將它們作爲分層次序存儲 – eday

+0

@eday右鍵,然後只需向樹中的正常節點添加字段即可。 –