假設我有一個具有成員變量A * my_hash的類Base。 我也有類繼承自基類的擴展。我也有一個B類 延伸A.C++設計問題
class Base{
Base(): my_hash(new A) {}
//methods which use my_hash
protected:
A* my_hash;
};
class Extended:public Base{
//methods which use my_hash from A
//I cannot have a B* my_other_hash in this class
//I would like to substitute B* my_hash
//I cannot let Base create my_hash (of type A*) because that is not what I want.
};
我想擴展到做平常(即使用它從一個繼承的所有內容),除 並有一個重要的區別,我想my_hash爲B * 代替*。
每當有東西訪問my_hash,無論是通過擴展的方法或基地的方法, 我希望被執行的方法是B *的。
有一件事要嘗試: 我不能在Extended()中重新定義方法調用(例如Base()中的create_hash())。 這不起作用,因爲在創建哈希時似乎沒有辦法恢復到擴展類。
我不喜歡Base甚至不知道B怎麼做?
B從A派生出來嗎?或者:B和A有什麼關係? – 2009-12-20 23:40:04
@ Federico:它在第一段中寫道:「我也有一個B類延伸A.」 – 2009-12-20 23:49:28
用下面的答案,確保類A中有虛方法,這樣如果通過類A的指針調用該方法,則會執行B的方法。 – Jagannath 2009-12-21 08:34:42