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 :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
 
CFenetreAbstraite* CreerUneFenetre() = 0;
CPorteAbstraite* CreerUnePorte() = 0;
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
4
5
6
7
8
9
10
 
CFenetreConcreteA* CreerUneFenetre()
{
     return new CFenetreConcreteA;
}
 
CPorteConcreteA* CreerUnePorte()
{
     return new CPorteConcreteA;
}
Idem pour la classe CFabriqueConcreteB ... sauf que le A se transforme en B

Bref, quand je lance une compilation j'obtient le message suivant :
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
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 ?

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]