Bonjour a tous,

j ai un petit souci de conflit pour ma fonction create de ma classe c++.

Voila, j ai une classe qui herite d une classe abstraite. Je souhaite faire une factory (design pattern) et j essai de mettre une methode create dans chacun de mes objets. Tous mes types d objets heritent de la class A.
Donc le souci, c est que je souhaite que ma methode create deviennent alor un constructeur nomme, et donc je passe le contructeur de ma class B en private pour que seul la methode create puissent creer l objet. Mais le probleme que je rencontre est que je ne peux pa appeller la methode create avant que l objet soit creer, or c est celle ci qui doit le creer. Donc la solution, c est que je dois mettre la fonction en static, mais alor la , je ne respecte plus mon heritage qui dit que ma fonction create est virtuel .
Voici mes classes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
      class A
      {
         // plein de fonction virtuelles pures
         virtual A* Create() = 0;
      }
 
      class B : public A
      {
         private:
              B();
               //  membre prives de ma classe
         public:
              virtual A* Create();  // ici je dois mettre satic pour le constructeur mais ne respecte plus le virtual de A
               // plein d autres fonction
               // definition des fonctions virtuelle de A
      }
Voila, si vous savez comment je pourrais resoudre mon probleme.

Merci d avance pour vos reponse.
Cordialement.