Affichage d'un objet d'une std::list - C++ - Programmation
Marsh Posté le 15-03-2008 à 15:17:45
nebneblan a écrit :
|
C'est écrit sur le message d'erreur que tu fournis (pbm ligne 20).
Le compilo ne trouvera pas ostream si t'indiques pas son namespace. De plus, t'as pas à filer le contructeur de Vin dans la déclaration de operator<<, l'objet devrait suffire.
Marsh Posté le 15-03-2008 à 15:19:15
ReplyMarsh Posté le 15-03-2008 à 15:38:14
marche pô
Citation : std::ostream & operator <<(std::ostream & os, Vin(std::string nom, std::string annee) & l) |
Citation : |
ahah! désolé pour les smileys
Marsh Posté le 15-03-2008 à 15:48:02
nebneblan a écrit : marche pô
|
oh la, ça m'a l'air assez balèze comme niveau alors
Bon courage, moi je vais à la pêche.
Marsh Posté le 15-03-2008 à 19:25:37
C'est pas plutôt ostream& operator <<(ostream& os, Vin& l) ?
Marsh Posté le 15-03-2008 à 20:36:35
C'est changer, il y a moins d'erreurs mais ça marche toujours pas ... =(
Citation : 50 C:\Documents and Settings\Propriétaire\Bureau\ProjetProg\vin.cpp no match for 'operator*' in '*(&it)->std::_List_const_iterator<_Tp>::operator* [with _Tp = Vin]()' |
Marsh Posté le 15-03-2008 à 20:44:49
marche pas
Moi qui venait ici en me disant que c'etait un truc tout con ben finalement...
Marsh Posté le 15-03-2008 à 21:19:57
reposte ton code actuel
Marsh Posté le 15-03-2008 à 21:30:57
HPP:
Citation : |
CPP:
Citation : #include "vin.hpp" |
Marsh Posté le 16-03-2008 à 11:49:45
hpp:
Code :
|
cpp:
Code :
|
Marsh Posté le 16-03-2008 à 11:52:54
vu la qualité du code de base, qqs questions avant de continuer :
* peut tu me justifier pourquoi la classe Vin contint un liste de Vin o_O
* passer tes parametres en références , ca te dis rien, la tu passes ta vie à copier tes string.
* WTFBBQ @ la méthode execute
Marsh Posté le 16-03-2008 à 12:01:26
Je cherche pas à faire un code définitif, mais juste à comprendre comment afficher les objets d'une liste, donc le reste je m'en fous voilà pourquoi je passe pas par referencement entre autres.
Pas compris ton dernier point.
Par contre, ou devrais-je mettre la liste de vins?
Marsh Posté le 16-03-2008 à 12:54:16
la liste des vins à rien à foutre dans une instance de Vin c'est tout
Quand t'achetes un bouteille , t'as quoi : une bouteille.
la liste doit etre un objet externe.
Marsh Posté le 16-03-2008 à 14:07:45
Et sinon pour mon probleme d'affichage d'un objet Vin, tu as une idée?
Marsh Posté le 16-03-2008 à 18:26:57
Que fait le main() au milieu du vin.cpp ?
Faut un const ici à cause du const_iterator
std:: ostream& operator <<(std:: ostream & os, const Vin & l)
Marsh Posté le 17-03-2008 à 10:07:42
Ou dois-je mettre le main()?
Ok je testerais de mettre const Vin.
Et est ce que c'est bon ce que j'ai mis dans la surcharge de << sinon?
Code :
|
Marsh Posté le 20-03-2008 à 13:02:53
Mon problème précedent est réglé, maintenant j'en ai un nouveau...
Je ne vois pas ou caser un "delete" pour supprimer mes pointeurs crées dans mon iteration...
Code :
|
Si je le mes dans l'iteration ça marche pas, et en dehors le "v" n'est pas reconnu...
thx pour de l'aide
Marsh Posté le 20-03-2008 à 19:01:36
Ben faut reparcourir ta liste apres coup, et faire un delete sur chacun des elements ...
Marsh Posté le 21-03-2008 à 13:22:20
Problème réglé, allé un autre:
Problème pour supprimer un objet Vin. Je sais qu'il faut supprimer l'objet, puis le pointeur, mais ça marche pas.
Le problème se situe au niveau du for de la ligne 43 a 51 je pense.
J'ai pas compris comment fonctionne ce que j'ai ecrit dans le for, car je l'ai trouvé sur un autre forum, en tout cas ça n'efface que le 1er vin de la liste, si c'est un autre vin ça plante...
Code :
|
Marsh Posté le 15-03-2008 à 14:46:13
Hello j'arrive pas à afficher un objet inséré dans une list:
20 C:\Documents and Settings\Propriétaire\Bureau\ProjetProg\vin.cpp expected constructor, destructor, or type conversion before '&' token
20 C:\Documents and Settings\Propriétaire\Bureau\ProjetProg\vin.cpp expected `,' or `;' before '&' token
50 C:\Documents and Settings\Propriétaire\Bureau\ProjetProg\vin.cpp no match for 'operator*' in '*(&it)->std::_List_const_iterator<_Tp>::operator* [with _Tp = Vin]()'
Le CPP:
#include "vin.hpp"
#include <iostream>
Vin::Vin()
{}
Vin::Vin(std::string nom,std::string annee):sonNom(nom), sonAnnee(annee)
{}
int main()
{
Vin().execute();
return 0;
}
ostream & operator <<(ostream & os, Vin(std::string nom, std::string annee) & l)
{
os << l.sonNom << ' ' << l.sonAnnee << '\n';
return os;
}
void Vin::execute()
{
std::string n;
std::cout << "nom: ";
std::cin >> n;
std::string a;
std::cout << "annee: ";
std::cin >> a;
sesVins.push_back(Vin(n,a));
std::list<Vin>::const_iterator it;
it=sesVins.begin();
std::cout << (**it) ;
int aten;
std::cin >> aten;
}
Le HPP:
#include <string>
#include <list>
class Vin
{
std::string sonNom;
std::string sonAnnee;
std::list<Vin> sesVins;
public:
Vin();
Vin(std::string nom, std::string annee);
void execute();
};
Voilà, cimer!