Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1254 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] Problème avec les fonctions virtuelles

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Problème avec les fonctions virtuelles

n°1516208
nisalon_ca​je
Posté le 18-02-2007 à 19:39:43  profilanswer
 

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.  
 
Merci d'avance
 
NC

mood
Publicité
Posté le 18-02-2007 à 19:39:43  profilanswer
 

n°1516211
-ThX-
Not here anymore
Posté le 18-02-2007 à 20:00:15  profilanswer
 

1/ Définir des accesseurs et mutateurs pour cette variable
 
2/ Utiliser le mot-clé "virtual" devant ces derniers, dans les classes mères.

n°1516212
nisalon_ca​je
Posté le 18-02-2007 à 20:03:45  profilanswer
 

heu ... après avoir chercher dans mon bouquin de c++, je n'ai pas trouvé ce qu'étaient des accesseurs et des mutateurs ... :(

n°1516217
-ThX-
Not here anymore
Posté le 18-02-2007 à 20:09:42  profilanswer
 

Tu sais ce que c'est, mais il est possible que tu les appelles autrement.
Getters ? Setters ?
 
accesseur ( qui permet l'accès ) :
 
int getMyInt() { return myInt; }
 
mutateur ( qui permet la modification ) ;
 
void setMyInt(int value) { myInt = value; }
 

n°1516218
-ThX-
Not here anymore
Posté le 18-02-2007 à 20:12:56  profilanswer
 

Je t'invite à jeter un oeil ici : http://www.nextgeneration.fr/cours [...] ritage.pdf
 
J'ai un cours sur les fonctions virtuelles qui est en cours de rédaction. Je te mets ça en ligne ce soir

n°1516220
nisalon_ca​je
Posté le 18-02-2007 à 20:14:56  profilanswer
 

ok merci mais en ce moment ma connexion internet tourne a 2 a l'heure, la faute à ce maudit g data je crois, je regarderais ca demain,et je vous tiendrais au courant ;)

n°1516231
-ThX-
Not here anymore
Posté le 18-02-2007 à 21:02:05  profilanswer
 
n°1516277
nisalon_ca​je
Posté le 18-02-2007 à 23:00:31  profilanswer
 

re, j'ai lu votre tutorial, mais cependant je n'ai pas trouvé la réponse à ma question, à moins d'avoir sauté une étape, mais je ne crois pas : je n'ai pas trouvé où vous parliez d'"accesseur" ou de "mutateur" (getters et setters ne me disent rien non plus) : vous parlez de fonctions virtuelles, mais mon problème n'est pas là, il est du aux variables qui ne sont pas dans la classe mere
:)

n°1516285
IrmatDen
Posté le 18-02-2007 à 23:22:38  profilanswer
 

Il faut que tu aies une méthode "virtual type getMaVar() const = 0;" dans la classe mère, que tu réimplémenteras dans les classes filles.
Ca te permettra d'appeller getMaVar() sur la classe mère, mais comme c'est une fonction virtuelle, la fonction rééllement appellée sera celle de l'instance réélle.
 
En gros, ThX t'a parlé de méthodes virtuelles et d'accesseurs/mutateurs, mais ce sont 2 notions indépendantes l'une de l'autre (mais utilisable conjointement bien sûr).

n°1516324
nisalon_ca​je
Posté le 19-02-2007 à 09:23:46  profilanswer
 

ok j'ai compris :)
 
Mais si j'ai par exemple dans class_a deux variables en plus par rapport à la class mère, comment faire pour renvoyer les 2 ? définir deux fonctions ? autant avoir mis ces variables dans la classe mère alors !

mood
Publicité
Posté le 19-02-2007 à 09:23:46  profilanswer
 

n°1516325
Taz
bisounours-codeur
Posté le 19-02-2007 à 09:40:23  profilanswer
 

t'as un problème de conception pas de code

n°1516335
nisalon_ca​je
Posté le 19-02-2007 à 10:27:51  profilanswer
 

en fait j'ai trouvé comment faire ca, par contre je ne sais pas comment faire si les variables sont de type différents : comment faire pour que la même fonction, à partir de la valeur du paramètre qui lui est donné peut-elle changer le type de retour ?

n°1516365
IrmatDen
Posté le 19-02-2007 à 11:26:54  profilanswer
 

Dans ce cas, c'est clairement ce que dis Taz et quoi que tu fasses tu seras toujours dans un problème.

n°1516369
-ThX-
Not here anymore
Posté le 19-02-2007 à 11:35:09  profilanswer
 

A (re)lire : Classes et objets


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] Problème avec les fonctions virtuelles

 

Sujets relatifs
probleme avec forum phpbbpopup créer fê^netre problème
[PHP]Problème if else if et connexionProbleme masterPage
probleme thread pthread_joinProbleme pour ouvrir POPUP avec IE et flash
problème compilation (link)[résolu] Probleme d'appel d'un objet dans ma classe
Probleme de différence firefox/ieProblème DATETIME US
Plus de sujets relatifs à : [C++] Problème avec les fonctions virtuelles


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR