基本クラスとそれを拡張する子クラスがあります。子クラスには、親クラスにはない独自のメソッドがあります。つまり、基本クラスで仮想として宣言することは、実際にはオプションではありません。
class A {
public:
virtual void helloWorld();
};
class B : public A {
public:
virtual void helloWorld();
void myNewMethod();
};
次に、私の実装では、A へのポインターがあり、それを B として構築しました。
// somewhere in a .cpp file
A* x;
x = new B();
x->myNewMethod(); // doesn't work
私の現在の解決策は、それをキャストすることです:
((B *)x)->myNewMethod();
私の質問は、これを行うためのよりクリーンな方法はありますか、それとも進むべき道をキャストしていますか?