Valeur par defaut et heritage + methode virtuelle - C++ - Programmation
Marsh Posté le 25-06-2008 à 14:40:12
Bah la tu appeles methode 1 de A (qui d'ailleurs n'est pas définie).
Ca me parait donc un poil normal que ça compile pas.
edit: et aussi faudrait un type de retour à ta methode.
re-edit: moué apparement visual aime pas trop pour sa part, tu peux toujours surcharger methode1 mais bon ya p'tet mieux. Il me semble avoir lu quelque part que c'était un peu le mal de faire de l'héritage mélangé avec des params par défaut mais pas moyen de retrouver où.
Marsh Posté le 25-06-2008 à 16:19:25
*oui, pardon, j'ai corrigé ca... c'est bien la methode de B que je souhaite appeler
Et il s'agit d'une méthode virtuelle (qui pourrait tres bien etre virutelle pure (=0) et donc ce serait une classe abstraite ce qui rentre tres bien dans le principe d'orienté objet... en JAVA ya que ca)
Marsh Posté le 25-06-2008 à 16:40:35
Bah en l'occurence c'est un fait que visual studio 2005 n'aime pas quand on fait cela. Après savoir le pourquoi du comment je sais pas trop (je cherche en fait ça m'intrigue un peu tout ça)
edit: ah j'avais pas vu que tu avais changé le A en B Ca marche d'ailleurs à présent, si tu met methode1 de A en virtuelle pure ou que tu lui met un corps.
Marsh Posté le 25-06-2008 à 17:22:54
la présence de paramètres par défaut fait parti de la signature non ?
Donc faut que ca soit cohérent avec le prototype de la fonction héritée.
Marsh Posté le 25-06-2008 à 19:00:17
Joel F a écrit : la présence de paramètres par défaut fait parti de la signature non ? |
non. ce que tu veux faire est déconseillé, ça fait pas bon ménage du tout.
si tu veux ce comportement, c'est peut-être aussi bien de faire:
- une virtual do_stuff(a, b);
- une pas virtual stuff(a, b = c) { return this->do_stuff(a, b); }
Marsh Posté le 25-06-2008 à 21:17:14
les valeurs par défaut, c'est du maquillage pour compilateur. D'ailleurs tu ne déclares tes valeurs par défaut que dans tes déclarations et tu ne les répètes pas dans tes définitions.
Marsh Posté le 25-06-2008 à 21:30:02
Ça se passe comment en fait la résolution des valeurs par défaut au niveau compilo ? (en particulier par rapport à l'héritage)
j'arrive po a retrouver le bouquin ou j'avais lu des trucs là dessus...
Marsh Posté le 25-06-2008 à 21:52:03
bah c'est ambigüe, ça provoque une erreur, il faut expliciter avec un cast de fonction membre et tout
Marsh Posté le 25-06-2008 à 21:57:39
genre un bon vieux
Code :
|
pour faire la différence entre
Code :
|
Marsh Posté le 26-06-2008 à 14:02:55
Taz a écrit : genre un bon vieux
|
Mais c'est horrible
Marsh Posté le 25-06-2008 à 14:22:51
comment vous résoudriez ce problème d'heritage et de valeurs par défaut ? :
Usage
B monB;
monB.methode1(machin);
Là le compilateur me dit que la méthode1 ne prend pas 1 seul parametre (mais 2)
Les valeur par defaut ca ne marche pas avec la redefinition de classes virtuelles ?
Message édité par NounouRs le 25-06-2008 à 16:18:59