Ho una classe base e una classe figlio estendendola. La classe figlio ha il suo metodo interno che la classe genitore non ha. Cioè, dichiararlo come virtuale nella classe base non è davvero un'opzione.Come chiamare il metodo figlio da un puntatore genitore in C++?
class A {
public:
virtual void helloWorld();
};
class B : public A {
public:
virtual void helloWorld();
void myNewMethod();
};
Poi, nella mia implementazione, ho un puntatore ad A e ho costruito come B:
// somewhere in a .cpp file
A* x;
x = new B();
x->myNewMethod(); // doesn't work
La mia soluzione attuale è quella di lanciarlo:
((B *)x)->myNewMethod();
La mia domanda è, c'è un modo più pulito per farlo, o è il modo di andare?