我在Ubuntu 11.10和最新版本的NetBeans中使用C++。比方說,我有 下面的代碼:如何:派生類中派生類的派生類與特定於派生類的方法
class Node {}
class DerivedNode : public Node {}
class Graph {
vector<Node*> nodes;
}
class DerivedGraph : public Graph { }
在我存儲DerivedNodes在DerivedGraph類像這樣的例子時刻:
nodes.push_back(new DerivedNode());
當我需要使用只適用於特定的方法DerivedNodes和DerivedGraphs 我不得不先在我的節點指針上使用dynamic_cast。
我希望能夠在DerivedGraph中具體應用DerivedNodes ,避免需要投射指針。如果結果 的結果比我的要好,我不介意重新設計我的課程。
我確定必須有一個乾淨而簡單的方法來實現我想要做的同樣的事情。 也許用專門的模板?任何關於此事的想法都會大大促進 。我還會提供所需的任何附加信息,但我並不清楚 。
編輯:我沒有兩個副本。我想強調它的外觀。我爲演示道歉。我想獲得的是:
class DerivedGraph: public Graph {
vector<DerivedNode*> nodes;
}
爲什麼你有**兩個**節點的拷貝? –
@Morat:再次檢查。 'DerivedGraph'具有一個'nodes'成員,並且它也繼承'Graph'的'nodes'成員。所以'DerivedGraph'有兩個'節點'成員。 –
我明白你的意思。我會重新編輯我原來的問題,因爲它似乎會產生混淆。我的實際代碼沒有節點容器兩次。 – Morat