2013-08-15 5 views
0

J'ai une classe de base Board_S et 10 autres classes qui héritent de la classe de base Board_S.Appel d'une sous-classe à partir de la classe principale

J'ai un objet pour Board_S qui appelle la classe Board_S et sa fonction qui devrait appeler une fonction de plus d'une sous-classe spécifique.

Je reçois l'erreur: Class does not name a type;

Comment faire j'appelle la fonction de sous-classe de cette classe principale.

S'il vous plaît Aide

+3

Pourriez-vous partager votre code ?? –

+0

Enlever la balise 'c'. –

Répondre

0

La seule façon de le faire correctement est de déclarer une fonction virtuelle dans votre classe de base et la mettre en œuvre dans votre classe dérivée.

class A 
{ 
public: 
    A() {} 
    virtual ~A() {} 

    virtual void func() {} 

    void CallFunc() { func(); } 
}; 

class B : public A 
{ 
public: 
    B() {} 
    virtual ~B() {} 

    virtual void func() {} // overrides it 
}; 

int main() 
{ 
    A a; 
    A* pB = new B; 

    a.CallFunc(); // will call the base class version of func() 
    pB->CallFunc(); // will call the derived class version of func() 

    delete pB; 
} 

Si vous n'avez pas besoin de la fonction de substitution dans une classe dérivée (et la fonction est déclarée comme une fonction virtuelle pure), vous ne supplante pas.

Questions connexes