Surchage d'opérateurs cin avec struct C++
Résolu/Fermé
Maxianos
Messages postés
55
Date d'inscription
mardi 11 mars 2008
Statut
Membre
Dernière intervention
2 juin 2009
-
25 nov. 2008 à 20:18
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 26 nov. 2008 à 08:54
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 26 nov. 2008 à 08:54
A voir également:
- Surchage d'opérateurs cin avec struct C++
- Le bon cin - Guide
- Java struct - Forum Java
- Avoir 2 opérateurs mobile - Forum Mobile
- Langage C - Les opérateurs - Astuces et Solutions
- Operateurs |= &= ~ en langage C ✓ - Forum C
2 réponses
Utilisateur anonyme
26 nov. 2008 à 03:13
26 nov. 2008 à 03:13
Bonjour,
Je ne puis répondre eaxtement à votre question, mais je puis vous donner une piste !.
À l'époque, on m'a apprit qu'il falait utilisé une fonction amie.
Voici comment j'ai surchargé l'opérateur [ cout << ]
il faut trouver le bon nom de la fonction amie, iostream probablement
et à l"intérieur d'une telle fonction, tu remplie toute ta structure
morceau par morceau.
ainsi tu peux pousser ton objet sur un cin et il voit ta structure "
Dans mon exemple je pousse un tableau de 100 éléments sur le cout.
Lupin
Je ne puis répondre eaxtement à votre question, mais je puis vous donner une piste !.
À l'époque, on m'a apprit qu'il falait utilisé une fonction amie.
Voici comment j'ai surchargé l'opérateur [ cout << ]
ostream &operator<< (ostream &flux, const boites &s) { int j=0,k=0; flux << "\n\n\n {"; //mib cout << endl; while ( k < tailleMax ) { cout << " "; while ( j < ( tailleMax / 10 ) ) // Description de la ligne { if ( s.boites[k] < 10 ) { if ( s.boites[k] == 1 ) flux << " " << k << " "; else flux << " "; // flux << s.boites[k] << " " ; // Ligne de déboggage j++; k++; } else { if ( s.boite[k] == 1 ) flux << k << " "; else flux << " "; // flux << s.boite[k] << " " ; // Ligne de déboggage j++; k++; } }; j = 0; // Ligne suivante cout << endl; }; flux << " }\n\n\n"; //mib return flux; };
il faut trouver le bon nom de la fonction amie, iostream probablement
et à l"intérieur d'une telle fonction, tu remplie toute ta structure
morceau par morceau.
ainsi tu peux pousser ton objet sur un cin et il voit ta structure "
Dans mon exemple je pousse un tableau de 100 éléments sur le cout.
Lupin
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
26 nov. 2008 à 08:54
26 nov. 2008 à 08:54
pour surchargé l'opérateur, c'est simple (assez similaire à ce que dit lupin) :
Par contre, les fonctions amies (friend) c'est utile lorsque tu souhaite accédé à des membres privés de classe, là tu utilise des structures, donc tout est publique par défaut.
std::istream& operator(std::istream is,const boite& b) { is>>b.cpt; for(int i=0;i<26;i++) { is>>b.liste[i].source; is>>b.liste[i].destination; ... } return is; }ensuite, tu fait simplement std::cin>>boite_t; et c'est bon.
Par contre, les fonctions amies (friend) c'est utile lorsque tu souhaite accédé à des membres privés de classe, là tu utilise des structures, donc tout est publique par défaut.