我有一個純虛函數的基類,我有一個派生類,其基類虛函數的定義以及它自己的函數。如何讓基類對象調用派生類非虛函數?
現在我已經指出了基類對象派生類,如:
Base *bc =new Child();
我想調用子類的方法使用該對象(沒有定義或父聲明)。
但我得到編譯器錯誤memeberFunction not define in Base class
。
的代碼是:
class Base
{
public:
virtual void method1() = 0;
};
class child : public Base
{
public:
virtual void method1() {}
void Method2() { /* some implementation */ }
};
我怎樣才能做到這一點?
bc->Method2();
請參閱['dynamic_cast'](http://stackoverflow.com/questions/9973708/dynamic-cast-from-base-to-derived)。 – DCoder
如果'bc'是'Base *',*爲什麼*你想要做'bc-> Method2();'?這裏的根本問題是什麼? – Johnsyweb
如果你知道Base *是什麼類型,你可以對你想要的類型做一個'static_cast'。通過使用'type_id'運算符或在Base中返回一個類型(通常枚舉或一個整數作爲ID)的某種虛函數。 –