Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème avec les fonctions virtuelles [ Système / Autre ] (nisaloncaje)

dimanche 18 février 2007 à 23:05:24 | Problème avec les fonctions virtuelles

nisaloncaje

Salut, j'utilise dans mon programme un vector qui contient plusieurs types d'objets issus d'une meme classe (class_mere) qui est abstraite. Pour la déclaration de ce vecteur j'utilise
vector<class_mere*> objs;
 
Ces objets sont de classe class_a ou class_b ou class_c et on chacun des variables propres (qui ne sont pas dans les autres classes).
 
Le problème est le suivant : si je fais un appel à une variables qui appartient à une des classes héritées mais pas à la classe mère, par l'intermédiaire du tableau, par exemple
objs[0]->var_appartenant_que_a_class_a;
le compilateur me renvoie que class_mere ne contient pas cette variable. Ainsi je ne sais pas comment accéder à cette variable qui appartient à un objet du tableau
 
Merci d'avance
 
NC

lundi 19 février 2007 à 01:31:11 | Re : Problème avec les fonctions virtuelles

bouba

Salut, je n'ensuis pas sûr mais je pense que tu es obligé de faire un cast dynamique pour savoir quel type d'objet tu es en train de traiter.

if(dynamic_cast<class_a>(objs[i]) != 0)
  dynamic_cast<class_a>(objs[i])->var_appartenant_que_a_class_a;

Tu peux aussi faire avec typeid()

if(typeid(objs[i]) == typeid(class_a))
  dynamic_cast<class_a>(objs[i])->var_appartenant_que_a_class_a;

Mais bon, ce type de code qu'à utiliser que dans des cas très spécifique. Dans la plupart des cas, avec une bonne architecture de classes on peut éviter ce type de code.

Bonne chance.

Bouba.

lundi 19 février 2007 à 16:38:02 | Re : Problème avec les fonctions virtuelles

yann_lo_san

Il me semble qu'un static cast suffit dans ce cas.

(class_a*)(objs[0])->var_class_a;




Cette discussion est classé dans : problème, class, classe, fonctions, virtuelles


Répondre à ce message

Sujets en rapport avec ce message

Problème de class [ par norton ] Bonsoir, j'ai un problème avec ma class. quand je compile ca me donne ce message d'erreur : error C2653: 'CCamera' : is not a class or namespace name Creation de class en C++ [ par js1000 ] Bonjour a tous !Je suis novice en C++ et je suis en train d'apprende les bases. J'ai donc une question a vous posez :Je veux ecrire une classe Matrice [Class] Problème avec définitions multiples [ par o0Leo0o ] Bonjour. J'ai deux classes, CInit (qui contient la fonction InitSDL) et CBMP (qui contient la fonction ShowBMP), ces deux class font appels à screen Problème utilisation fonction [ par sidhannowe ] Bonjour, J'utilise la classe screenshot présentée ici: http://www.cppfrance.com/code.aspx?id=21255 mais lorsque je compile Dev c++ m'indique des erre Déclaration d'une class [ par Turok ] Salut, Je débute en C++, et dans mon prog j'ai créer une class. Le prob, c'est que quand une instance de cette class (Class_object objet(""), pour pou class et fichier [ par lilington ] salut j'ai 2 questions: 1- est il possible de stocker une classe dans un fichier comme on ferai pour une structure? par exemple si je fais un carnet d Fonctions callback [ par neodelphi ] Bonjour tout le monde ! J'aimerai savoir s'il est possible de passé en paramètre un pointeur de méthode en précisant une instance, je m'explique: so Problème avec une classe [ par Freeskieur ] Hello,Je connais assez bien les classes mais là j'ai une spécialité et je capte pas comment il faut faire pour que ca passe.Ca foire sur la ligne ou i problème C++ help urgent ! [ par Saris ] Voici un morceau de ma classe générique d'un arbre./****************************************************************************< MSComm [ par Scopas ] Bonjour, j’ai un petit problème je cherche à ajouter un le contrôle ActiveX Microsoft communication control, version 6.0 (donc celui de MSComm) Sur Vi


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.