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 :

comment faire pour le constructeur de recopie ?


Sujet :

C++

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 11
    Points
    11
    Par défaut comment faire pour le constructeur de recopie ?
    Bonjour s'il vous plait j'ai un problème dans le constructeur de recopie sachant que j'ai dans
    fichier Cellule.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     class Cellule{
    double valeur;
    bool presence;
    };
    et fichier Ligne.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Ligne {
    string  matiere;
    Cellule note ;
    };
    et dans le main jai ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    vector<string>lib;
    lib.push_back("math");
    lib.push_back("anglais");
    Ligne l2(lib);
    1-Comment je dois faire pour le contructeur de recopie pour que le compilateur accepte cette Ligne Ligne l2(lib);

    Et est ce que la declaration de la class ligne est juste ? je dois ecrire "string matiere" ou bien "vector<string> matiere" ? sachant que je dois respecter le code dans le main.

    Aidez moi svp !! et merci d'avance ^^

  2. #2
    Membre confirmé
    Avatar de Kalite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 553
    Points
    553
    Par défaut
    Dans ton cas il y a un problème de conception. En gros:
    Une ligne contient une matière et une note.
    Or tu veut mettre plusieurs matière dans une ligne.

    Je dirai juste que c'est pas possible.
    Peut-tu donner un plus d'information ?

    PS: Le constructeur par recopie, créé une copie d'un objet du même type. Or ici tu utilise un constructeur avec paramètre car "lib" est du type "vector<string>" et pas "Ligne".

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Donc dans mon fichier .h je dois le définir de cette manière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ligne(vector<string>) ;
    et dans le .cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Ligne :: Ligne (vector<string> lib){ 
     
          matiere = lib;
    }
    et que je dois définir alors la classe de cette manière
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Ligne {
    vector<string> matiere;
    Cellule note ;
    };
    puisque le constructeur que j'ai est comme ca Ligne l2(lib);

    mais ca marche toujours pas
    Que dois je mettre ? quelqu'un pourra t il m'aider s'il vous plait !

  4. #4
    Membre confirmé
    Avatar de Kalite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 310
    Points : 553
    Points
    553
    Par défaut
    Citation Envoyé par pinketta Voir le message
    mais ca marche toujours pas
    Que dois je mettre ? qq'un pourra t il m'aider svp !
    Faut que tu soit un peut plus précise sur ce qui ne fonctionne pas. Parce que là il impossible de t'aider.

    Le code devrait fonctionner même si je te conseil d'écrire le constructeur de la manière suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Ligne :: Ligne (const vector<string>& lib) :
        matiere(lib)
    {
    }

  5. #5
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    D'accord merci

    l'erreur qui me mentionne se trouve la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Ligne  {
     
          vector<string> matiere;
    };
    il m'ecrit declaration of 'vector' with no type
    Est ce que c'est autorisé l'ecriture de ce type "vector<string>" dans une classe ?

  6. #6
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Ne te manquerait-il pas un #include <vector> ou un #include <string>, ou un std:: devant vector (et string)
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  7. #7
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mars 2012
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    Ouii merci, exactement c'est ce qui manquait maintenant ca marche bien, meme si je vois pas l'utilité de std à coté de vector ou string...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<std::string> matiere;

  8. #8
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

Discussions similaires

  1. comment faire pour qu'une application soit toujours visible ?
    Par goldbar dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 28/03/2004, 14h35
  2. Réponses: 7
    Dernier message: 13/12/2003, 14h09
  3. comment faire pour developper des prog en win32
    Par rhodan51 dans le forum Autres éditeurs
    Réponses: 11
    Dernier message: 09/11/2003, 19h39
  4. Comment faire pour mettre l'ecran en veille ?
    Par March' dans le forum MFC
    Réponses: 6
    Dernier message: 29/08/2002, 14h25
  5. Comment faire pour créer un bitmap
    Par GliGli dans le forum C++Builder
    Réponses: 2
    Dernier message: 24/04/2002, 15h41

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