OVH Cloud OVH Cloud

question simple . : Le constructeur par défaut.

5 réponses
Avatar
fred
class umem
{
private:
int vm_landnr;
int vm_mandnr;
int um_1;
int um_2;

public :

umem(int vm_l,int vm_m) : vm_landnr(vm_l), vm_mandnr(vm_m){}
inline void SetVM(int vm_l,int vm_m){ vm_landnr=3D vm_l;
vm_mandnr=3Dvm_m; }
};

int main(int argc, char **argv)
{
umem umem;
}

pourquoi j'ai le message d'erreur "umem" has no default constructor."
???
Pourquoi ai je besoin de d=E9clarer umem(); dans ma classe ? J'ai d=E9j=E0
un constructeur..

merci

5 réponses

Avatar
Jean-Marc Bourguet
"fred" writes:

int main(int argc, char **argv)
{
umem umem;
}

pourquoi j'ai le message d'erreur "umem" has no default constructor."
???
Pourquoi ai je besoin de déclarer umem(); dans ma classe ? J'ai déjà
un constructeur..


Il ne faut alors pas utiliser le constructeur par defaut...

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
fred
Ok.. je crois que je suis fatigué aujourd'hui...
Merci et désolé .

fred


Jean-Marc Bourguet schrieb:

"fred" writes:

int main(int argc, char **argv)
{
umem umem;
}

pourquoi j'ai le message d'erreur "umem" has no default constructor."
???
Pourquoi ai je besoin de déclarer umem(); dans ma classe ? J'ai déj à
un constructeur..


Il ne faut alors pas utiliser le constructeur par defaut...

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/inde x.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org



Avatar
Rémy
"fred" a écrit dans le message de news:


pourquoi j'ai le message d'erreur "umem" has no default constructor."
???
Pourquoi ai je besoin de déclarer umem(); dans ma classe ? J'ai déjà
un constructeur..


Alors il faut utiliser celui là et déclarer :

umem umem(10,10); // Mettez les bonnes valeurs ;-))

Puisque le seul constructeur que vous proposez attend deux entiers en
paramètre.

merci


De rien.

Avatar
meow
Il ne faut alors pas utiliser le constructeur par defaut...


Il manque pas un brin d'explication là ?

Bon je vais tenter de la donner mais je garantis rien :

1. Il existe en effet un constructeur par défaut, mais il n'est
défini et utilisable que si tu ne définis aucun autre constructeur.
En clair : dès lors que tu définis un constructeur quelconque, tu ne
peux plus utiliser le constructeur par défaut. Du coup, si tu veux
utiliser un constructeur sans arguments il te faut en définir un, ou
tout du moins un constructeur qui s'y résoud (i.e. dont touts les
arguments ont une valeur par défaut).

2. Je pense que ce que JMB a voulu dire c'est que si tu as l'intention
d'utiliser quelque chose, c'est toujours préférable de l'écrire :
ça clarifie tes intentions tant pour toi que pour des lecteurs
ultérieurs. Il faut toujours se méfier des implicites.

Cela étant, je ne sais pas pour quelle raison le C++ fournit ce
constructeur par défaut... Quelqu'un a un exemple où c'est necessaire
?

--Ben

Avatar
Jean-Marc Bourguet
"meow" writes:

Il ne faut alors pas utiliser le constructeur par defaut...


Il manque pas un brin d'explication là ?


Si: j'ai du partir en reunion et j'ai envoye par erreur avant de
partir.

Bon je vais tenter de la donner mais je garantis rien :

2. Je pense que ce que JMB a voulu dire c'est que si tu as l'intention
d'utiliser quelque chose, c'est toujours préférable de l'écrire :
ça clarifie tes intentions tant pour toi que pour des lecteurs
ultérieurs. Il faut toujours se méfier des implicites.


Ce que j'ai voulu ecrire, c'est que

Classe c;

resulte en un appel au constructeur par defaut de Classe.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org