Bonjour.
Je suis actuellement un cours à l'université dans lequel je dois élaborer un programme orienté objet cependant je me heurte à un problème de conception à plusieurs endroit de mon programme. J'ai des données dans mon programme pour lesquelles je veux surcharger les operateur + - * / de manière différente selon les types d'objets. J'ai des données de la forme.
1 2 3 4 5 6 7 8 9 10 11 12 | class class_mere { public: virtual class_mere& operator+(class_mere&) = 0; // On veut que cet operateur soit défini pour toutes les classes filles } class classe_fille_1 { } class classe_fille_2 { } |
Et je veux qu'on puisse utiliser operator+ sur des pointeur de class_mere tels que suivant si ils pointent sur des objets classe_fille_1 ou classe_fille_2 ils renvoient ceci :
objet classe_fille_1 + objet classe_fille_2 donne objet classe_fille_1
objet classe_fille_1 + objet classe_fille_1 donne objet classe_fille_1
objet classe_fille_2 + objet classe_fille_1 donne objet classe_fille_1
objet classe_fille_2 + objet classe_fille_2 donne objet classe_fille_2.
Cependant faire :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class class_mere { public: virtual class_mere& operator+(class_mere&) = 0; // On veut que cet operateur soit défini pour toutes les classes filles } class classe_fille_1 { public: classe_mere& operator+(class_mere&); } class classe_fille_2 { public: classe_fille_2& operator+(classe_fille_2&); classe_fille_1& operator+(classe_fille_1&); } |
Ne marche pas car classe_fille_2 est alors considérée comme virtuelle !
Comment résoudre ce problème de conception qui me bloque vraiment ?
Merci beaucoup