Comprendre les constructeurs !

MichelAliasMiB Messages postés 19 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 février 2003 - 24 févr. 2003 à 00:03
MichelAliasMiB Messages postés 19 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 février 2003 - 24 févr. 2003 à 15:45
Bonjour,

Merci de vous arreter :-)

Je suis présentement une formation en C++,
et j'aimerais comprendre quelque chose qui
n'est pas clair dans mon bouquin !

je dois produire des constructeurs diverses
sur un problème posé, à l'intérieur d'une
class.

j'ai créer un constructeur par défault :

class serieEntiers
{
public:

serieEntiers();

// mon deuxième constructeur doit accepter, 5
// arguments passés en paramètres et ceux-ci
// doivent avoir des valeurs par défault.

// donc :

serieEntiers (int=0,int=0,int=0,int=0,int=0)

// toutefois, le compilateur me dit :

// <multiple default constructors specified>

// afin de contourner ce problème, j'ai ajouter :

serieEntiers (const serieEntiers &,
int=0,int=0,int=0,int=0,int=0)

// ou :

serieEntiers (const int &,int=0,int=0,int=0,int=0)

//-----------------------------------------

ce que j'en comprends,
c'est que :
pas d'arguments
et
avec des arguments passés par valeur,
il n'y a pas de différence !

Il faut obligatoirement, introduire des
arguments passés par références ???

Ai-je été assez clair ?

Merci de vos lumières !

MiB

5 réponses

MichelAliasMiB Messages postés 19 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 février 2003
24 févr. 2003 à 03:51
Bonjour,

J'ai trouvé grâce è une personne qui m'a
répondu dans un autre forum.

En fait, pour les intéressé, je ne pouvais
déclaré tous mes arguments par défault
puisque avec tous les arguments par
défault, ce constructeur était identique
au premier.

Il suffisait, de mettre un argument
obligatoire, ex.:

serieEntiers (int,int=0,int=0,int=0,int=0)

J'en étais arrivé à une conclusion du style,
mais pour être sur que je comprenne
bien, j'ai posté cette requète.

Merci quand même :-)

MiB
0
cs_vieuxLion Messages postés 455 Date d'inscription samedi 26 octobre 2002 Statut Membre Dernière intervention 6 avril 2004 8
24 févr. 2003 à 10:00
bonjour,
Ok, tu avais deux Constructeurs identiques ce qui est interdit.
Mais la soluition de grader le Ctor par défaut et d'en créer un autre avec un param obligatoire + params avec valeur par défaut n'est pas terrible !
Le but des valeurs par défaut est aussi d'économiser les méthodes, il vaudrait mieux n'avoir QUE le Ctor du type :
serieEntiers (int=0,int=0,int=0,int=0,int=0)
et non pas
serieEntiers () et serieEntiers (int,int=0,int=0,int=0,int=0)
0
lpikachu58 Messages postés 351 Date d'inscription samedi 2 février 2002 Statut Membre Dernière intervention 6 mai 2004 2
24 févr. 2003 à 11:00
Salut à toi
La seule chose que je peux te proposer c'est d'essayer dans ta déclaration de classe de nommer le nom des arguments que tu passes à ton constructeur.

De plus essais un autre compilateur du type g++ sous linux c'est avec ce dernier que j'ai réussi à faire passer ton exemple.
@+
Cédric Lemaitre
Viva le révolution Linux!!!!!!!!!!!!!!!
0
MichelAliasMiB Messages postés 19 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 février 2003
24 févr. 2003 à 15:11
Merci vieuxLion,

Je comprends ton point de vue et force m'est
donné de constater que tu as raison, ceci n'est
qu'un exercice destiné à me faire comprendre
ces choses là.

Ce n'est pas toujours évident de comprendre
les bouquins quand on est seul, et sans ce
forum, je galèrerais ...

galère ? ... ce n'est pas vraiment dans notre
vocabulaire au Québec, mais j'espère l'utiliser
de façon compréhensible :-)

Merci encore :-)

MiB
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MichelAliasMiB Messages postés 19 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 février 2003
24 févr. 2003 à 15:45
Merci de votre intervention :-)

Je vais faire d'autres tests dans ce sens, je suis
toujours ouvert à aller de l'avant pour améliorer
mes connaissances. Bien que j'ai compris le principe
il n'y as de limite que lorsque l'on en place soi-même.

Merci encore :-)

MiB
0
Rejoignez-nous