IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Pb initialisateur classe


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Par défaut Pb initialisateur classe
    voila j'ai mon constructeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    /////////////////////////////////////////////////////////////////////////////
    ////                    CONSTRUCTEUR DE LA CLASSE                        ////
    /////////////////////////////////////////////////////////////////////////////  
    fraction::fraction(int numerateur=1,int denominateur=1) 
    {
        num=numerateur;
        denom=denominateur;
        simplifie();
    }
    mon probeme est que lorsque je compile une declaration comme celle-ci (avec dev C++) : mon complilateur renvoi une erreur
    no matching fonction to `fraction::fraction()'
    candidates are : fraction::fraction(const fraction &)
    fraction::fraction(int,int)
    alors que je n'ai aucun constructeur de type "fraction::fraction(const fraction &)" je pense que c'est un constructeur de recopie creer par defaut par le compilateur mais comment arranger mon probleme ?

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 366
    Par défaut
    Salut,

    Pour corriger ton problème, il faut que tu spécifies les valeurs par défaut des paramètres de ton constructeur dans la déclaration de ce dernier et non dans sa définition :

    fraction.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    class fraction {
     
      public:
        fraction(int numerateur = 1, int denominateur = 1);
     
    };
    fraction.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    fraction::fraction(int numerateur, int denominateur): num(numerateur), denom(denominateur) {
    simplifie();
    }
    Pense aussi a passer par les listes d'initialisation plutôt que d'initialiser tes paramètres toi-même dans le corps du constructeur, c'est plus efficace.

    Pour le constructeur prenant une référence constante sur fraction, il s'agit effectivement du constructeur de copie généré automatiquement par le compilo.

Discussions similaires

  1. Classe pour la création d'un graphe xy
    Par Bob dans le forum MFC
    Réponses: 24
    Dernier message: 03/12/2009, 17h20
  2. Réponses: 31
    Dernier message: 30/03/2006, 16h57
  3. Élaboration de classe
    Par il_a_ri dans le forum Langages de programmation
    Réponses: 6
    Dernier message: 16/01/2003, 14h22
  4. Variable d'une Classe Ancêtre
    Par Génie dans le forum Langage
    Réponses: 3
    Dernier message: 18/09/2002, 19h24
  5. Sortir un typedef d'une classe
    Par Theophil dans le forum C++Builder
    Réponses: 13
    Dernier message: 03/07/2002, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo