Constructeur herité implicite

Résolu
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 - 16 sept. 2006 à 17:15
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 - 16 sept. 2006 à 19:59
salut a tous, j'ai une question toute bete : est il possible d'appeler implicitement un constructeur d'une class mere?

j'ai 3 niveaux de classes; et je voudrais declarer le constructeur seulement dans la classe de plus haut niveau. Ca me donnerait :

class C1 {
public:
    int m_x;
    C1(int x) { m_x = x); }
};

class C2: public C1 {};

class C3: public C2{};

C3* mon_c3;
mon_c3 = new C3(5); // erreur : le constructeur C3(int) n'est pas déclaré !!!

est il possible que le compilateur lie directement le constructeur de C1 sans que j'ai à declarer
    C2(int x) : C1(x) {};
et
    C3(int x) : C2(x) {};

?

merci

4 réponses

cosmobob Messages postés 700 Date d'inscription mardi 30 décembre 2003 Statut Membre Dernière intervention 27 janvier 2009 4
16 sept. 2006 à 17:34
non, c'est pas possible
le seul constructeur appelé implicitement c'est celui qui n'a pas de parametres
a+
3
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
16 sept. 2006 à 18:50
Oui.
3
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
16 sept. 2006 à 18:13
donc ca veut dire que, par contre, je peu faire ca :

class C1 {
public:
    int m_x;
    C1() { m_x = 5; }
};

class C2: public C1 {};

class C3: public C2{};

C3* mon_c3;
mon_c3 = new C3();

et il me mettra automatiquerment m_x à 5 ?
0
Guillemouze Messages postés 991 Date d'inscription samedi 25 octobre 2003 Statut Membre Dernière intervention 29 août 2013 6
16 sept. 2006 à 19:59
merci
0
Rejoignez-nous