我有一個基類和一個擴展它的子類。子類在父類中沒有自己的方法。也就是說,在基類中聲明它是虛擬的並不是真正的選擇。如何從C++中的父指針調用子方法?
class A {
public:
virtual void helloWorld();
};
class B : public A {
public:
virtual void helloWorld();
void myNewMethod();
};
然後,在我的實現,我有一個指向我構建它作爲B:
// somewhere in a .cpp file
A* x;
x = new B();
x->myNewMethod(); // doesn't work
我目前的解決辦法是將它轉換:
((B *)x)->myNewMethod();
我的問題是,有沒有一種更清潔的方式來做到這一點,或正在擺脫困境?