Bonjour,

J'aimerais avoir une petite confirmation sur le problème suivant car je trouve que la méthode est un peu lourde :

J'ai une classe de base : mere et des classes filles. La classe mere contient un pointeur que je veux initialiser lors de l'instanciation de toutes mes classes, pour cela j'ai un constructeur dédié.
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
class mere
{
protected: 
   UneClass *ObjPtr;
public:
   mere();
   mere(UneClass *UnObj)
};
 
 
mere::mere(UneClass *UnObj)
{
   // Initialisation
   ObjPtr = UnObj;
}
Puis dans les classes filles :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
class fille : public mere
{
public:
   fille();
   fille(UneClass *UnObj);
};
Or quand j'appelle le constructeur de la classe fille avec le second constructeur fille(UneClass *UnObj), c'est le constructeur mere() qui est appelé en premier alors que j'aimerais que ce soit mere(UneClass *UnObj), qui en pratique n'est jamais appelé, pour traiter directement l'affectation (et le code qui va avec) uniquement dans la class mere. Alors qu'ici je suis obligé de redéfinir ce bout de code dans toute les classes filles.

Donc existe t-il un moyen de faire ça ou faut-il redéfinir l'affectation dans toutes les classes fille (en passant éventuellement par une méthode placée dans la classe mere) ?

Merci pour vos conseils