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 :

J'ai besoin de deux constructeurs par copie avec une liste d'initialisation différent


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut J'ai besoin de deux constructeurs par copie avec une liste d'initialisation différent
    Bonjour tout le monde,

    Je dois charger en mémoire deux fichiers txt.

    Pour cela, j'ai besoin de deux constructeurs par copie qui ne sont différent que par leur liste d'initialisation.

    ça ne fonctionne pas, j'ai ce message d'erreur :

    function '__thiscall CFauxFrere::CFauxFrere(const class CFauxFrere &)' already has a body
    Avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CFauxFrere::CFauxFrere(const CFauxFrere& Source) //constructeur par copie
    :m_Ligne(Source.m_Ligne)
    {
    }
     
    CFauxFrere::CFauxFrere(const CFauxFrere& Source) //constructeur par copie
    :m_Code(Source.m_Code),m_Nom(Source.m_Nom),m_Type(Source.m_Type),m_Feminin(Source.m_Feminin),m_Pluriel(Source.m_Pluriel),m_ComplementInformation(Source.m_ComplementInformation),m_Definition(Source.m_Definition);
    {
    }
    Merci d'avance pour votre aide.

    beegees

  2. #2
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 155
    Par défaut
    Ben là, typiquement je dirais que c'est normal que le compilo râle!

    dans ton .HPP, tu dois avoir un seul constructeur par recopie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CFauxFrere(const CFauxFrere& Source);
    Tu ne peux donc pas lui donner plusieurs définitions dans le .CPP

    A la rigueur tu peux bidouiller en rajoutant un parametre bidon afin que le compilo prenne le bon constructeur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CFauxFrere::CFauxFrere(const CFauxFrere& Source, int bidon) //constructeur par copie
    :m_Ligne(Source.m_Ligne)
    {
    }
     
    CFauxFrere::CFauxFrere(const CFauxFrere& Source) //constructeur par copie
    :m_Code(Source.m_Code),m_Nom(Source.m_Nom),m_Type(Source.m_Type),m_Feminin(Source.m_Feminin),m_Pluriel(Source.m_Pluriel),m_ComplementInformation(Source.m_ComplementInformation),m_Definition(Source.m_Definition);
    {
    }
    est ce que ca répond a ta question?

  3. #3
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par loicounet Voir le message
    Ben là, typiquement je dirais que c'est normal que le compilo râle!

    dans ton .HPP, tu dois avoir un seul constructeur par recopie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CFauxFrere(const CFauxFrere& Source);
    Tu ne peux donc pas lui donner plusieurs définitions dans le .CPP

    A la rigueur tu peux bidouiller en rajoutant un parametre bidon afin que le compilo prenne le bon constructeur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CFauxFrere::CFauxFrere(const CFauxFrere& Source, int bidon) //constructeur par copie
    :m_Ligne(Source.m_Ligne)
    {
    }
     
    CFauxFrere::CFauxFrere(const CFauxFrere& Source) //constructeur par copie
    :m_Code(Source.m_Code),m_Nom(Source.m_Nom),m_Type(Source.m_Type),m_Feminin(Source.m_Feminin),m_Pluriel(Source.m_Pluriel),m_ComplementInformation(Source.m_ComplementInformation),m_Definition(Source.m_Definition);
    {
    }
    est ce que ca répond a ta question?
    Salut,

    Un tout grand merci pour ton aide.

    J'ai fais ce que tu as dis :

    Dans le point h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CFauxFrere(const CFauxFrere& Source,int bidon); //constructeur par copie
     
    CFauxFrere(const CFauxFrere& Source); //constructeur par copie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CFauxFrere::CFauxFrere(const CFauxFrere& Source, int bidon) //constructeur par copie
    :m_Ligne(Source.m_Ligne)
    {
    }
     
    CFauxFrere::CFauxFrere(const CFauxFrere& Source) //constructeur par copie
    :m_Code(Source.m_Code),m_Nom(Source.m_Nom),m_Type(Source.m_Type),m_Feminin(Source.m_Feminin),m_Pluriel(Source.m_Pluriel),m_ComplementInformation(Source.m_ComplementInformation),m_Definition(Source.m_Definition);
    {
    }
    J'ai ce message d'erreur sur le deuxième constructeur :

    syntax error : '{'
    et

    ';' found in what should be a comma-separated list
    Qu'en penses-tu ?

    Encore merci
    beegees

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2005
    Messages
    171
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 171
    Par défaut
    Salut,

    Tu ne peux pas avoir deux constructeurs avec la même signature. (Sinon comment savoir lequel appeler ?)

  5. #5
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par Aurelpitiless Voir le message
    Salut,

    Tu ne peux pas avoir deux constructeurs avec la même signature. (Sinon comment savoir lequel appeler ?)
    Salut,

    Tu as raison, comme ça s'est vrai que s'est plus claire.

    Merci

    beegees

  6. #6
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 155
    Par défaut
    regarde au bout de ta liste d'initialisation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_Definition(Source.m_Definition);
    t'as mis un ";" au bout ;-)
    enlève le déjà, je pense que le
    Citation:
    ';' found in what should be a comma-separated list
    vient de là!

  7. #7
    Membre expérimenté
    Avatar de beegees
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2004
    Messages
    3 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 610
    Par défaut
    Citation Envoyé par loicounet Voir le message
    regarde au bout de ta liste d'initialisation:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_Definition(Source.m_Definition);
    t'as mis un ";" au bout ;-)
    enlève le déjà, je pense que le

    vient de là!
    Salut,

    Merci pour ta réponse.

    En effet, il ne fallait pas mettre de ; à la fin, je ne suis pas encore très bien habitué avec les constructeurs.

    Maintenant, mon texte ne s'affiche plus.

    Tantôt, avant que j'ajoute bidon, il s'affichait.

    Merci encore

    beegees

  8. #8
    Alp
    Alp est déconnecté
    Expert confirmé

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Par défaut
    Tu peux aussi écrire un seul constructeur avec un booléen en argument supplémentaire.
    Si il vaut 'true', tu initialises de telle manière, sinon de l'autre manière.

  9. #9
    Membre éprouvé
    Inscrit en
    Avril 2008
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 155
    Par défaut
    ca marche now donc?
    si oui marque ton sujet en "résolu"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Filtrer les enregistrements par date avec une liste déroulante
    Par sardaucar dans le forum IHM
    Réponses: 7
    Dernier message: 19/11/2013, 19h13
  2. Réponses: 3
    Dernier message: 22/03/2011, 12h56
  3. [POO] constructeur de copie pour une liste
    Par oswalidos dans le forum C++
    Réponses: 8
    Dernier message: 29/10/2008, 09h39
  4. Constructeur par copie et std::list
    Par Captain_JS dans le forum SL & STL
    Réponses: 5
    Dernier message: 13/12/2005, 19h15
  5. [deb.]Constructeur par copie
    Par Marc_3 dans le forum Débuter
    Réponses: 4
    Dernier message: 19/11/2005, 13h33

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