Voila je me met progressivement au c++ e la je suis tombé face a un
probleme:
j'ai besoin de surcharger un constructeur d'une classe A
j'ai donc deux constructeurs:
A(int param1; int param2; int param3; int param4);
et
A( int param1; int param2; int param3);
est ce que je peut dans
A( int param1; int param2; int param3; int param4);
faire apel a A( int param1; int param2; int param3);
genre:
A( int param1; int param2; int param3; int param4){
A( param1, param2,param3);
truc=param4;
}
j'ai trouvé que des exemples ou ils recopiaient le code de a A( int
param1; int param2; int param3; int param4) dans
A( param1, param2,param3) et je trouve ca un peu "crade"
qq1 a il une soluce?
--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christophe de VIENNE
3dsman wrote:
salut tout le monde!
Voila je me met progressivement au c++ e la je suis tombé face a un probleme:
j'ai besoin de surcharger un constructeur d'une classe A
j'ai donc deux constructeurs:
A(int param1; int param2; int param3; int param4); et A( int param1; int param2; int param3);
est ce que je peut dans A( int param1; int param2; int param3; int param4); faire apel a A( int param1; int param2; int param3);
non
[...]
j'ai trouvé que des exemples ou ils recopiaient le code de a A( int param1; int param2; int param3; int param4) dans A( param1, param2,param3) et je trouve ca un peu "crade"
qq1 a il une soluce?
Met le code commun dans une fonction que tu appelles depuis les constructeurs :
A::A( int param1; int param2; int param3; int param4) { init(); }
A::A( int param1; int param2; int param3) { init(); }
cela dit, si la version de ton constructeur à 3 paramètres fait la même chose que celle avec 4, mais en prenant une valeur par défaut pour param4, il vaut mieux écrire :
class A { A(int p1, int p2, int p3, int p4 = 0); // en admettant que la // valeur par défaut est 0 évidemment
//... };
A+
Christophe
-- Christophe de Vienne
3dsman wrote:
salut tout le monde!
Voila je me met progressivement au c++ e la je suis tombé face a un
probleme:
j'ai besoin de surcharger un constructeur d'une classe A
j'ai donc deux constructeurs:
A(int param1; int param2; int param3; int param4);
et
A( int param1; int param2; int param3);
est ce que je peut dans
A( int param1; int param2; int param3; int param4);
faire apel a A( int param1; int param2; int param3);
non
[...]
j'ai trouvé que des exemples ou ils recopiaient le code de a A( int
param1; int param2; int param3; int param4) dans
A( param1, param2,param3) et je trouve ca un peu "crade"
qq1 a il une soluce?
Met le code commun dans une fonction que tu appelles depuis les
constructeurs :
A::A( int param1; int param2; int param3; int param4)
{
init();
}
A::A( int param1; int param2; int param3)
{
init();
}
cela dit, si la version de ton constructeur à 3 paramètres fait la même
chose que celle avec 4, mais en prenant une valeur par défaut pour
param4, il vaut mieux écrire :
class A
{
A(int p1, int p2, int p3, int p4 = 0); // en admettant que la
// valeur par défaut est 0 évidemment
Voila je me met progressivement au c++ e la je suis tombé face a un probleme:
j'ai besoin de surcharger un constructeur d'une classe A
j'ai donc deux constructeurs:
A(int param1; int param2; int param3; int param4); et A( int param1; int param2; int param3);
est ce que je peut dans A( int param1; int param2; int param3; int param4); faire apel a A( int param1; int param2; int param3);
non
[...]
j'ai trouvé que des exemples ou ils recopiaient le code de a A( int param1; int param2; int param3; int param4) dans A( param1, param2,param3) et je trouve ca un peu "crade"
qq1 a il une soluce?
Met le code commun dans une fonction que tu appelles depuis les constructeurs :
A::A( int param1; int param2; int param3; int param4) { init(); }
A::A( int param1; int param2; int param3) { init(); }
cela dit, si la version de ton constructeur à 3 paramètres fait la même chose que celle avec 4, mais en prenant une valeur par défaut pour param4, il vaut mieux écrire :
class A { A(int p1, int p2, int p3, int p4 = 0); // en admettant que la // valeur par défaut est 0 évidemment
//... };
A+
Christophe
-- Christophe de Vienne
Horst Kraemer
3dsman wrote:
salut tout le monde!
Voila je me met progressivement au c++ e la je suis tombé face a un probleme:
j'ai besoin de surcharger un constructeur d'une classe A
j'ai donc deux constructeurs:
A(int param1; int param2; int param3; int param4); et A( int param1; int param2; int param3);
est ce que je peut dans A( int param1; int param2; int param3; int param4); faire apel a A( int param1; int param2; int param3);
Non. On ne peut jamais "appeler" un constructeur. Quand A est une classe et tu dis
A(....)
quelque part, alors cette expression crée toujours un *nouveau* objet du type A.
genre: A( int param1; int param2; int param3; int param4){ A( param1, param2,param3); truc=param4; }
Dans ce cas simple il ne te faut qu'un seul constructeur
A( int param1, int param2, int param3, int param4=NOPARAM) : truc(param4) { /* ici le code de la version avec 3 paramètres sans l'initialisation de 'truc' */ }
où NOPARAM est la valeur par laquelle tu initialiserais truc dans un constructeur avec trois paramètres.
-- Horst
-- Lâche pas la patate!
3dsman <3dsman@free.fr> wrote:
salut tout le monde!
Voila je me met progressivement au c++ e la je suis tombé face a un
probleme:
j'ai besoin de surcharger un constructeur d'une classe A
j'ai donc deux constructeurs:
A(int param1; int param2; int param3; int param4);
et
A( int param1; int param2; int param3);
est ce que je peut dans
A( int param1; int param2; int param3; int param4);
faire apel a A( int param1; int param2; int param3);
Non. On ne peut jamais "appeler" un constructeur. Quand A est une
classe et tu dis
A(....)
quelque part, alors cette expression crée toujours un *nouveau* objet
du type A.
genre:
A( int param1; int param2; int param3; int param4){
A( param1, param2,param3);
truc=param4;
}
Dans ce cas simple il ne te faut qu'un seul constructeur
A( int param1, int param2, int param3, int param4=NOPARAM) :
truc(param4) { /* ici le code de la version avec 3 paramètres
sans l'initialisation de 'truc' */ }
où NOPARAM est la valeur par laquelle tu initialiserais truc dans un
constructeur avec trois paramètres.
Voila je me met progressivement au c++ e la je suis tombé face a un probleme:
j'ai besoin de surcharger un constructeur d'une classe A
j'ai donc deux constructeurs:
A(int param1; int param2; int param3; int param4); et A( int param1; int param2; int param3);
est ce que je peut dans A( int param1; int param2; int param3; int param4); faire apel a A( int param1; int param2; int param3);
Non. On ne peut jamais "appeler" un constructeur. Quand A est une classe et tu dis
A(....)
quelque part, alors cette expression crée toujours un *nouveau* objet du type A.
genre: A( int param1; int param2; int param3; int param4){ A( param1, param2,param3); truc=param4; }
Dans ce cas simple il ne te faut qu'un seul constructeur
A( int param1, int param2, int param3, int param4=NOPARAM) : truc(param4) { /* ici le code de la version avec 3 paramètres sans l'initialisation de 'truc' */ }
où NOPARAM est la valeur par laquelle tu initialiserais truc dans un constructeur avec trois paramètres.
-- Horst
-- Lâche pas la patate!
drkm
Horst Kraemer writes:
Non. On ne peut jamais "appeler" un constructeur. Quand A est une classe et tu dis
A(....)
quelque part, alors cette expression crée toujours un *nouveau* objet du type A.
Même dans :
struct B : A { B() : A() { } } ;
?
--drkm
Horst Kraemer <horst.kraemer@epost.de> writes:
Non. On ne peut jamais "appeler" un constructeur. Quand A est une
classe et tu dis
A(....)
quelque part, alors cette expression crée toujours un *nouveau* objet
du type A.