[VC++] DESIGN PATTERN AbstractFactory ... erreur compilation
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:
1 2 3
|
CFenetreAbstraite* CreerUneFenetre() = 0;
CPorteAbstraite* CreerUnePorte() = 0; |
Dans la classe CFabriqueConcreteA je redéfinis ces deux fonctions come suit :
Code:
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 :wink:
Bref, quand je lance une compilation j'obtient le message suivant :
Code:
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]