Comment appeler de l'enfant de la méthode à partir d'un parent pointeur en c++?

J'ai une classe de base et un enfant de la classe ou de l'étendre. L'enfant de la classe a sa propre méthode à l'intérieur de la classe parent n'a pas. C'est, en la déclarant comme virtuelle dans la classe de base n'est pas vraiment une option.

class A {
  public:
    virtual void helloWorld();
};

class B : public A {
  public:
    virtual void helloWorld();
    void myNewMethod();
};

Alors, dans mon application, j'ai un pointeur vers Un et j'ai construit, comme B:

//somewhere in a .cpp file
A* x;
x = new B();
x->myNewMethod(); //doesn't work

Ma solution actuelle est de le jeter:

((B *)x)->myNewMethod();

Ma question est, est-il une manière plus propre de faire cela, ou est le casting du chemin à parcourir?

OriginalL'auteur Sefu | 2013-03-10