Comprendre les constructeurs !

Signaler
Messages postés
19
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
24 février 2003
-
Messages postés
19
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
24 février 2003
-
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

Messages postés
19
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
24 février 2003

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
Messages postés
455
Date d'inscription
samedi 26 octobre 2002
Statut
Membre
Dernière intervention
6 avril 2004
8
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)
Messages postés
351
Date d'inscription
samedi 2 février 2002
Statut
Membre
Dernière intervention
6 mai 2004
3
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!!!!!!!!!!!!!!!
Messages postés
19
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
24 février 2003

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
Messages postés
19
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
24 février 2003

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