我有一個基類呼叫派生類的方法
class base {
public:
base();
int someData;
virtual void foo(){
std::cout << someData;
}
};
和幾個派生類,如
class derived : public base {
public:
derived();
void foo(){
std::cout << someData * 5;
}
};
基本上他們有同樣的數據,但在作業本數據是不同的。 我有另一個不需要知道我的對象的細節的類,它所需要做的就是設置數據並調用派生的foo()。
class useData {
public:
useData();
base x;
int do() { x.someData = 5; return x.foo(); }
};
我想「useData」,以儘可能通用的,所以我使用的基類,而不是在其定義的派生類。 當然在這種情況下,它會調用基本方法而不是派生的方法。我如何重寫我的代碼或自動(無需類型檢查或類似)調用派生方法?
謝謝
存儲引用或指向'base'的指針。 'base x;'將永遠只是一個'base',而不是'derived'。 – jrok
請看我對Hivert的回答。 必須有我忘記的東西,因爲我知道這是多態性是如何工作的,但現在我看不出我做錯了什麼。 – Codeluppi
然後顯示你的真實代碼。 – jrok