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

SL & STL C++ Discussion :

Problème de vector


Sujet :

SL & STL C++

  1. #61
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Je viens de te donner la réponse à ta première erreur

  2. #62
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu as oublié un std:: devant le second ostream.

  3. #63
    Membre confirmé Avatar de Sachiel31
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Par défaut
    HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA !!!!!!!!!!!!!!

    Ca a compilé nickel

    Me reste plus qu'à tester l'affichage de mon vector (j'ai quand meme fait tout ça pour y arriver)

    Merciiiiiiiiiiiiiiiiiiiiiiiii

  4. #64
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Ouf !
    Si ça fonctionne, n'oublies pas le bouton 'Résolu'

  5. #65
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Pas encore, ça, c'était pour voir ce qui ne marchait pas dans la première question

  6. #66
    Membre confirmé Avatar de Sachiel31
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Par défaut
    Je vais pas vous lacher aussi facilement

    L'affichage ne marche pas.

    Je met tout au clair.
    Voici bordereau.h :
    c'est lui qui contient mon vector de Destinatire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    class Bordereau
    {
    private:
    	std::string date;
    	std::string devise;
    	std::string montantTotal;
     
    public:
    	std::vector<Destinataire> conteneurDest;
    	std::vector<Destinataire>::iterator itDest;
     
    	std::vector<Emetteur> conteneurEm;
    	std::vector<Emetteur>::iterator itEm;
     
    	Emetteur theEmetteur;
    	Destinataire theDestinataire;
     
    	Bordereau();
     
    	void afficheB();
     
    	const std::string get_date() const;
    	void set_date(std::string value);
     
    	const std::string get_devise() const;
    	void set_devise(std::string value);
     
    	const std::string get_montantTotal() const;
    	void set_montantTotal(std::string value);
     
    	void afficheConteneurDest();
     
    	friend 	std::ostream& operator<< (std::ostream &os, const Destinataire &dest);
     
    };
    Voici ma fonction d'affichage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void Bordereau::afficheConteneurDest(){
    	for(int i = 0; i < conteneurDest.size(); i ++){
    		cout << conteneurDest[i];
    	}
    }
    Et maintenant l'erreur obtenue sur le cout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Bordereau.cpp(6) : error C2678: binary '<<' : no operator defined
    which takes a left-hand operand of type
    'class ostream_withassign' (or there is no acceptable conversion)

  7. #67
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Le friend est inutile puisque tu utilises des accesseurs, quoiqu'en dise Poukill... - en plus ça aurait un sens si tu mettais ce friend dans la classe Destinataire, pas là -

    Tu inclus bien l'en-tête de ta fonction dans ton fichier cpp ? et l'en-tête iostream ?

  8. #68
    Membre confirmé Avatar de Sachiel31
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Par défaut
    Oui oui c'est bon.

  9. #69
    Membre émérite
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Par défaut
    Pourquoi iln'y a pas de std:: devant le premier endl de la premiere ligne du code de la surcharge ?

  10. #70
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Et pourquoi l'opérateur << est toujours défini dans la classe Bordereau ?

  11. #71
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Il est déclaré friend dans Boredereau, c'est tout, c'est ce que j'ai indiqué.

    C'est quel compilateur ?

  12. #72
    Membre confirmé Avatar de Sachiel31
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Par défaut
    le "std::" c'es parceque je l'ai oublié et l'operateur n'est plus dans bordereau.h

  13. #73
    Membre émérite
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Par défaut
    parceque qu'elle veut le mettre en "friend" et qu'elle n'ecoute pô ce qu'on lui dit ! (j'deconne)

    Alors le
    friend std::ostream& operator<< (std::ostream &os, const Destinataire &dest);
    est dedans (en public de preference)

    ou

    std::ostream& operator<< (std::ostream &os, const Destinataire &dest);
    est APRES le }; de la classe

    c'est pareil

  14. #74
    Membre confirmé Avatar de Sachiel31
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Par défaut
    J'utilise Visual C++ 6.0

    et ça ne change rien que je mette la déclaration de mon operateur dans la classe (avec friend) ou endehors, ou carément pas du tout dans bordereau.h

    j'ai toujours la meme erreur :
    error C2678: binary '<<' : no operator defined which takes a left-hand operand of type 'class ostream_withassign' (or there is no acceptable conversion)

  15. #75
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Probablement une question bête : dans le fichier cpp qui contiens ta fonction d'affichage, tu as bien un using namespace std; ?

  16. #76
    Membre émérite
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Par défaut
    Citation Envoyé par Eusebe
    Probablement une question bête : dans le fichier cpp qui contiens ta fonction d'affichage, tu as bien un using namespace std; ?
    en principe d'apres ce que j'ai vu elle rajoute std:: devant tout alors....

    en plus afficheConteneurDest() est u methode donc le using namespace std devrait etre fait AVANT la declaration de la classe au cas ou on l'utilise..

    [edit]: a ben voila il manque std::void afficheConteneurDest();

    [edit2]: Sasa montre-nous les <include> que tu utilise dans Bordereau.h

  17. #77
    Membre confirmé Avatar de Sachiel31
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    121
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 121
    Par défaut
    Re [B]HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA !!!!!!!!!!!!![/B]

    Tout marche nickel. J'ai rien changé mais c'est pas grave. C'est un miracle de l'informatique

    L'affichage de mon vector marche et son remplissage aussi


    Je vous remercie tous beaucoup beaucoup, ce soir je vais enfin pouvoir dormir sans réver des erreurs de mon code.

  18. #78
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Tu n'as rien changé ? Etonnant...
    Mais bon, le principal c'est que ça fonctionne

    Bonne nuit alors !

  19. #79
    Membre émérite
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Par défaut
    De rien

    bonne nuit (tu en a manifestement un peu besoin... )

  20. #80
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 327
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 327
    Par défaut
    Citation Envoyé par Eusebe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for ( itDest=conteneurDest. begin ( ) ;
          itDest !=conteneurDest. end ( ) ;
          ++itDest ) {
        monBordereau->theDestinataire.afficheD(n); // tu affiches
        monBordereau->conteneurDest.insert(itDest, monBordereau->theDestinataire); //tu inseres
    }
    a- Je ne pense pas que l'on puisse faire ça : l'itérateur ne doit plus être valide après l'insertion.
    b- Et en plus, je n'en vois pas l'intérêt : pourquoi insérer le même élément à tous les emplacements d'un vector ?
    a- C'est une certitude, il sera invalidé. Qui plus est, c'est une initialisation des plus étranges que je ne vois pas trop ce qu'elle peut faire. Avec un peu de chance, le container est vide, du coup on ne rentre pas dans la boucle et la mémoire n'est pas mise sans dessus-dessous.

    b- Pour initialiser ? S'il n'y a pas un constructeur spécialisé pour cela, il y std::fill et std::fill_n

    PS: <iostream> seulement là où l'on se sert de std::cout, std::cin, std::cerr ou std::clog. Il suffit de <iosfwd> pour les déclarations en avant dans les .h (où il n'y a pas de code, n'est-ce pas ? ^^) Et <istream>/<ostream> là on l'on définit du code qui a besoin des définitions des classes de flux.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

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

Discussions similaires

  1. Problème redimensionnement vector
    Par Zacks dans le forum SL & STL
    Réponses: 2
    Dernier message: 19/06/2006, 15h18
  2. [Debutant][Vector]Petit problème de vector
    Par GyZmoO dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 25/05/2006, 10h39
  3. Problème avec vector par référence
    Par vdumont dans le forum SL & STL
    Réponses: 11
    Dernier message: 09/05/2006, 08h25
  4. Problème de vector
    Par jamesleouf dans le forum SL & STL
    Réponses: 13
    Dernier message: 22/03/2006, 22h36
  5. problème class vector
    Par Pe04 dans le forum SL & STL
    Réponses: 2
    Dernier message: 27/02/2006, 10h45

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