2010-08-05 6 views
1

Bonjour :) Je voudrais demander, si elle est posible de faire quelque chose comme ceci:classe virtuelle en classe abstraite

j'ai classe de base (mère) et trois autres classes (Childs) BCD en classe A , j'ai des fonctions virtuelles, ça va. mais si j'ai besoin d'un cours virtuel?

class A 
{ 
public: 
    virtual int func1()=0; 
    virtual int func2()=0; 

    virtual class AB; // !!!!??? 
}; 

class B 
{ 
public: 
    int func1(); 
    int func2(); 

    class AB 
    { 
    public: 
    .... 
    }; 
}; 

classe B C D sont les mêmes que la classe B. Maintenant, je voudrais créer une instance de classe et il devrait automatiquement « rediriger » classe instance de B ou C D etc comme des fonctions.

est-ce possible? J'espère, vous comprenez :) Merci beaucoup pour la réponse.

+0

Donnez-nous plus de détails sur ce que vous essayez de faire avec la classe AB. –

+0

Pouvez-vous donner un exemple de ce que vous voulez faire ici? Les classes virtuelles n'existent pas dans la façon dont vous les décrivez, mais des modèles ou d'autres astuces peuvent aider, mais je ne peux pas en dire beaucoup plus à moins de définir votre objectif plus précisément. –

Répondre

2

Ceci est fondamentalement impossible. Un appel de fonction virtuelle est déterminé au moment de l'exécution. Une classe modifie le comportement du programme lors de la compilation. Vous ne pouvez pas effectuer une détermination à la compilation au moment de l'exécution, sauf si runtime et compiletime sont en même temps, c'est-à-dire en utilisant un générateur JIT ou d'autres générateurs de code dynamique. En C++ standard, c'est impossible. Ce que vous pouvez faire est d'avoir une classe de base AB, avec une fonction virtuelle qui crée une classe dont l'héritage est garanti à partir de cette classe de base, puis renvoyer un pointeur vers cette classe.

+0

C'est la raison, pourquoi il n'y a pas d'informations sur "classe virtuelle" :) merci de votre réponse – wh1sp3r

Questions connexes