Salut tout le monde !
Je suis en train d'�tudier les DESIGN PATTERN ... vaste et complexe sujet.
Je rencontre des probl�mes � l'impl�mentation de la "Fabrique Abstraite" et je souhaiterais avoir la confirmation que ce probl�me vient en fait du compilateur.
J'ai cod� 3 classes abstraites :
* CFabriqueAbstraite
* CFenetreAbstraite
* CPorteAbstraite
et 6 classes d�riv�es :
* CFabriqueConcreteA
* CFabriqueConcreteB
* CFenetreConcreteA
* CFenetreConcreteB
* CPorteConcreteA
* CPorteConcreteB
Ma classe CFabriqueAbstraite contient un constructeur et un destructeur, ainsi que 2 fonctions virtuelles pures :
Dans la classe CFabriqueConcreteA je red�finis ces deux fonctions come suit :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 CFenetreAbstraite* CreerUneFenetre() = 0; CPorteAbstraite* CreerUnePorte() = 0;
Idem pour la classe CFabriqueConcreteB ... sauf que le A se transforme en B
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10 CFenetreConcreteA* CreerUneFenetre() { return new CFenetreConcreteA; } CPorteConcreteA* CreerUnePorte() { return new CPorteConcreteA; }![]()
Bref, quand je lance une compilation j'obtient le message suivant :
Je sais que les types de retour sont diff�rents mais CPorteConcreteA d�rive de CPorteAbstraite, alors pourquoi c'est pas possible de faire �a ?
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 error C2555: 'CFabriqueConcreteA::CreerUnePorte' : overriding virtual function differs from 'CFabriqueAbstraite::CreerUnePorte' only by return type or calling convention
Il me semble avoir entendu dire que le compilateur VC++ pouvait �tre la cause de cette erreur, c'est vrai ? Et comment r�soudre mon probl�me ?
D'avance merci[/code]
Partager