1

en C++, j'ai dans une classe:

Classe::Classe(int a) {// constructeur 1
/* du code 1 ... */
}

Classe::Classe(int a, int b) {//constructeur 2
/* du code 1 ... */
/* du code 2 ... */
}

En java on peut factoriser le code en faisant en sorte que le constructeur 2 appelle le constructeur 1. Est-ce qu' on peut faire ca en C++, et si oui, comment?

2

Classe::Classe(int a) {// constructeur 1
/* du code 1 ... */
}

Classe::Classe(int a, int b) {//constructeur 2
    Classe::Classe(a);
    machin(a,b);
}
non?

3

ouai merci, ca a l'air de marcher.

4

ca se voit tout de suite quand je suis pas connecte.
Tout ce qui passe pas par le port 80, c'est de la triche.

5

pkoi? t'aurais plutot fait un pavé/un troll sur js-c#-java-ms-linux-fedora, <inserez ici un truc inutile> ?

6

./2 Non mais ça fait rien du tout ce bout de code, c'est un appel comme une fonction statique là sorry je vois pas comment le Classe::Classe(a) pourrait agir sur l'instance courante vu qu'il ne connait pas le "this". De toutes façons on ne doit jamais appeler les constructeurs/destructeurs manuellement.

./1 Non ce n'est pas possible il faut que tu passes par une fonction init à part.

Classe::Classe(int a) {// constructeur 1 
init(a, 0);
} 
 
Classe::Classe(int a, int b) {//constructeur 2 
init(a, b);
}


[Edit]
Ou alors si c'est vraiment deux entier tu peux utiliser un paramètre par défaut:
Classe::Classe(int a, int b=0) {//constructeur 2 
   trucs(a, b);
}
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

7

ah.

mais pourquoi il a dit que ça passe?

8

Ben ça compile surement, mais ça fait ce qu'il faut tongue
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

9

En effet, ca compile, mais c'est tout grin
D'ailleur j'ai perdu 1 gentille petite demi heure avant de trouver que mon bug etait a cause de ca (qui soupsonnerai du code aussi innocent?) grin

Je n'ai rien dit parceque tout les features du C++ ne sont pas supportes quand on le compile avec de l'objective-C (ce qui est mon cas). J'ai donc cru qu'on ne pouvait pas faire le ./2 avec de l'objective-C...


./6 > OK!
./3 > je retire mon merci tongue
./4 > tu sers a rien.

10

./5 bah non ca lui aurait evite de poser une question pareil sur yN vu que jaurai ete connecte sur gtalk.
Tout ce qui passe pas par le port 80, c'est de la triche.

11

./10 ya rien d'idiot dans la question hum
avatar
Combien de tas de bois une marmotte pourrait couper si une marmotte pouvait couper du bois ?

12

j'ai jamais dit que c'etait idiot. je dis que si j'etais online (sur gtalk) il aurait pas poste ce topic.
Tout ce qui passe pas par le port 80, c'est de la triche.

13

et c'est pas bien de poster des topics ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

14

15

je crois pas avoir dit ça... surtout vu le nombre de topic que je créé ça serait se moquer du monde
Tout ce qui passe pas par le port 80, c'est de la triche.

16

bref. ce qui compte c'est ce qu'on a appris en c++ today.

perso je me coucherai moins con.

17

On ne peut pas appeler un constructeur en C++98.
En revanche, il paraît que ce sera possible en C++0x.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

18

Sinon, si tu es déjà familier avec l'idiome copy-and-swap, tu peux toujours créer un objet temporaire dans ton constructeur et swapper avec celui-ci...
avatar
Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.

19

mais pour le coup, il doit surement preferer factoriser le code du premier constructeur dans une fonction et la rappeler dans le second...