<snip>
Je résume mon code
class A : public B
<snip>
Est un erreur de ma part ou bien il est nécessaire d'utiliser new pour
initialiser les contructeurs des classes dérivées ?
<snip>
Je résume mon code
class A : public B
<snip>
Est un erreur de ma part ou bien il est nécessaire d'utiliser new pour
initialiser les contructeurs des classes dérivées ?
<snip>
Je résume mon code
class A : public B
<snip>
Est un erreur de ma part ou bien il est nécessaire d'utiliser new pour
initialiser les contructeurs des classes dérivées ?
bonjour,
Je débute en c++ et j'ai un souci avec les construteurs de classes
dérivés.
Je résume mon code
class A : public B
{
B();
B(int x, int y);
~B(){};
}
B::B(){};
B::B(int x, int y)
: A(x,y)
{
// --
}
int main()
{
B b0(1,2);
B* pb1 = new B(1,2);
}
Les constructeurs A() et A(int x, int y) sont déclarés dans la classe
de base.
J'ai constaté que b0 s'initialise avec le constructeur par défaut de A
et affecte x et y à 0
tandis que *pb1 est bien initialisé avec x=1 et y=2.
Est un erreur de ma part ou bien il est nécessaire d'utiliser new pour
initialiser les contructeurs des classes dérivées ?
Merci de vos réponses. :)
bonjour,
Je débute en c++ et j'ai un souci avec les construteurs de classes
dérivés.
Je résume mon code
class A : public B
{
B();
B(int x, int y);
~B(){};
}
B::B(){};
B::B(int x, int y)
: A(x,y)
{
// --
}
int main()
{
B b0(1,2);
B* pb1 = new B(1,2);
}
Les constructeurs A() et A(int x, int y) sont déclarés dans la classe
de base.
J'ai constaté que b0 s'initialise avec le constructeur par défaut de A
et affecte x et y à 0
tandis que *pb1 est bien initialisé avec x=1 et y=2.
Est un erreur de ma part ou bien il est nécessaire d'utiliser new pour
initialiser les contructeurs des classes dérivées ?
Merci de vos réponses. :)
bonjour,
Je débute en c++ et j'ai un souci avec les construteurs de classes
dérivés.
Je résume mon code
class A : public B
{
B();
B(int x, int y);
~B(){};
}
B::B(){};
B::B(int x, int y)
: A(x,y)
{
// --
}
int main()
{
B b0(1,2);
B* pb1 = new B(1,2);
}
Les constructeurs A() et A(int x, int y) sont déclarés dans la classe
de base.
J'ai constaté que b0 s'initialise avec le constructeur par défaut de A
et affecte x et y à 0
tandis que *pb1 est bien initialisé avec x=1 et y=2.
Est un erreur de ma part ou bien il est nécessaire d'utiliser new pour
initialiser les contructeurs des classes dérivées ?
Merci de vos réponses. :)
Le problème est que les br3 et br4 s'initialisent avec le constructeur
par défaut alors que j'appelle explicitement un autre constructeur de
la classe de base.
Je pense que le problème vient du constructeur de recopie de CBrick2d
mais je n'en suis pas sur...
J'ai abandonné l'idée d'utiliser new, car il n'est pas nécessaire.
J'ai remarqué que le code fonctionne en déclarant les briques (br3 et
b4) ainsi:
CBrick2d br3 = CBrick2d(0.1f ,0.2f ,0.3f ,5);
CBrick2d br4 = CBrick2d(1.5f, 2.6f, 0.1f ,0.2f ,0.3f);
au lieu de les déclarer en premier, puis de les affecter.
[snip]
Le problème est que les br3 et br4 s'initialisent avec le constructeur
par défaut alors que j'appelle explicitement un autre constructeur de
la classe de base.
Je pense que le problème vient du constructeur de recopie de CBrick2d
mais je n'en suis pas sur...
J'ai abandonné l'idée d'utiliser new, car il n'est pas nécessaire.
J'ai remarqué que le code fonctionne en déclarant les briques (br3 et
b4) ainsi:
CBrick2d br3 = CBrick2d(0.1f ,0.2f ,0.3f ,5);
CBrick2d br4 = CBrick2d(1.5f, 2.6f, 0.1f ,0.2f ,0.3f);
au lieu de les déclarer en premier, puis de les affecter.
[snip]
Le problème est que les br3 et br4 s'initialisent avec le constructeur
par défaut alors que j'appelle explicitement un autre constructeur de
la classe de base.
Je pense que le problème vient du constructeur de recopie de CBrick2d
mais je n'en suis pas sur...
J'ai abandonné l'idée d'utiliser new, car il n'est pas nécessaire.
J'ai remarqué que le code fonctionne en déclarant les briques (br3 et
b4) ainsi:
CBrick2d br3 = CBrick2d(0.1f ,0.2f ,0.3f ,5);
CBrick2d br4 = CBrick2d(1.5f, 2.6f, 0.1f ,0.2f ,0.3f);
au lieu de les déclarer en premier, puis de les affecter.
[snip]
J'avais écris:
((CBox2d) (*this)).operator=((CBox2d)rhs);
au lieu de :
CBox2d::operator=(rhs);
J'avais écris:
((CBox2d) (*this)).operator=((CBox2d)rhs);
au lieu de :
CBox2d::operator=(rhs);
J'avais écris:
((CBox2d) (*this)).operator=((CBox2d)rhs);
au lieu de :
CBox2d::operator=(rhs);