Initialisation constructeur c++

Fermé
jean - 18 janv. 2009 à 22:11
mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 - 19 janv. 2009 à 02:47
Bonjour,

Je suis en train d'apprendre le c++ et je rencontre un leger problème avec l'initialisation dans un constructeur.

Voici mon constructeur dans le .cpp

CuveRect::CuveRect(char *_nomfluide, double _longueur, double _largeur,double _hauteur, double _niveaufluide)
{
nomfluide = _nomfluide;
longueur = _longueur;
largeur = _largeur;
hauteur = _hauteur;
niveaufluide = _niveaufluide;
}

Et le voici dans le .h j'ai un peu bidouiller donc ça ne fonctionne pas et je vois plus trop quoi essayer d'autre pour trouver la bonne maniere de proceder:

CuveRect(char *nomfluide = "biere", double longueur = 3, double largeur =2 , double hauteur = 8, double niveaufluide = 0);

Si vous pouviez m'aider ce serait cool, merci

2 réponses

mamiemando Messages postés 33081 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 27 avril 2024 7 749
19 janv. 2009 à 02:47
Afin de différencier un header C++ d'un header C je te conseille plutôt d'utiliser l'extension .hpp.

Pour initialiser les attributs d'une classe il y a une syntaxe plus adéquate :
class pouet_t{
  protected:
    int x;
    char y;
    double z;
  public:
    pouet_t(int x0 = 0,char y ='a', double z = 0):
      x(x0),y(y0),z(z0)
    {
      // Code du constructeur, éventuellement vide
    }
};

Si tu souhaites implémenter le constructeur dans le .cpp et non dans le .hpp il ne faut mettre les valeurs par défaut que dans le .hpp. Dans le .cpp les valeurs par défaut ne doivent pas être reportées.

Bonne chance
3
En fait c'est pour mettre des valeurs par défaut pardon pas pour initialiser car ça fonctionne ça. ^^
0