IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[VC++] DESIGN PATTERN AbstractFactory ... erreur compilation


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    225
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 225
    Par d�faut [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 : 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]

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Ah oui, Le compilo de Visual C++ ne supporte pas les "retours covariants". (Encore que, j'ignore si la version 2005 les supporte ou non).

    Pour que �a marche, ben... Je ne connais pas ce pattern, mais s'il n�cessite absolument les retours covariants, ben tu n'as pas le choix: il va falloir changer de compilo... (Dev-C++ par exemple, si tu veux rester sous Windows)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre �clair�
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    225
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 225
    Par d�faut
    Covariant ... c'est bien ce que j'ai entendu.

    Je pense que je vais me pencher sur Gcc et v�rifier qu'il est plus conforme.

    Sinon tu utilises les DESIGN PATTERN (oui je sais, j'aime bien tout le temps �crire tous les mots ) depuis longtemps ? L'apprentissage n'est pas trop difficile ?

  4. #4
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    VC++ supporte les retours covariants de puis la version 7.1 au moins. Tu utilises quelle version ?
    Mais � priori �a n'intervient pas dans une fabrique. Pourquoi as-tu 3 classes CFabriqueAbstraite / CFabriqueConcreteA / CFabriqueConcreteB. A priori une seule suffit.

  5. #5
    Membre �clair�
    Profil pro
    Inscrit en
    Ao�t 2002
    Messages
    225
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2002
    Messages : 225
    Par d�faut
    Pour r�pondre � tes questions, je te dirais que j'utilise la version 6.0 de VisualC++ et que le diagramme dont je me suis inspir� pr�sentait une classe abstraite CFabriqueAbstraite et deux classes d�riv�es CFabriqueConcreteA et CFabriqueConcreteB ... effectivement j'aurais pu n'utiliser qu'une classe concrete CFabriqueConcrete.

    Mais ta remarque m'incite � me demander si j'impl�mente bien de la bonne fa�on le PATTERN

    Serait il possible de me proposer un exemple d'impl�mentation du PATTERN AbstractFactory ?

    D'avance merci

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 4
    Dernier message: 24/02/2009, 12h06
  2. [Curiosit�] design pattern visitor et compilation
    Par krokmitaine dans le forum C++
    R�ponses: 6
    Dernier message: 10/11/2006, 15h06
  3. Trop de message d'erreurs: compilation KO
    Par jeannot27 dans le forum C++Builder
    R�ponses: 6
    Dernier message: 21/01/2004, 16h45
  4. Erreur compilation DX8.1 VC++ 6
    Par d.vidal dans le forum DirectX
    R�ponses: 1
    Dernier message: 10/09/2003, 09h04
  5. [Design Patterns] Architecture 3 tiers
    Par HPJ dans le forum Design Patterns
    R�ponses: 1
    Dernier message: 29/07/2003, 11h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo