std::cout << *m->getElement() << std::endl;
src\Liste.h||In member function `QString Liste<T>::lister() const [with T = Materiel*]':| src\Systeme.cpp|277|instantiated from here| src\Liste.h|91|error: no match for 'operator<<' in 'std::cout << *(Materiel*)m->Maillon::getElement [with U = Materiel*]()'| C:\Program Files\CodeBlocks\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\c++\3.4.5\bits\ostream.tcc|63|note: candidates are: [...] ||Build finished: 1 errors, 0 warnings|
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question#ifndef __LISTE_H_ #define __LISTE_H_ #include #include <QString> #include "Maillon.h" template<class T> class Liste { private: Maillon<T> * debut; Maillon<T> * fin; unsigned int nbElements; public: Liste() : debut(NULL), fin(NULL), nbElements(0) { } ~Liste() { while (debut) retirer(); } Liste<T>* ajouter(const T & element) { /* blabla... */ } Liste<T>* concatener(const Liste* liste) { /* blabla... */ } T retirer() { /* blabla... */ } void vider() { while (debut) retirer(); } // La méthode qui nous intéresse : QString lister() const { QString str; Maillon<T> * m = debut; while (m != NULL) { str.append(m->getElement()->rapport() + "\n"); // Affichage dans une console graphique std::cout << m->getElement() << std::endl; // Affichage dans la console classique m = m->getSuivant(); } return str; } Liste& operator+=(const T & element) { return *ajouter(element); } unsigned int size() const { return nbElements; } bool vide() const { return (debut == NULL); } }; #endif
#ifndef __MAILLON_H_ #define __MAILLON_H_ template<class U> class Maillon { private: U element; Maillon * suivant; Maillon * precedent; public: Maillon(const U & u) : element(u), suivant(NULL), precedent (NULL){} const U & getElement() const { return element; } void setElement(const U & u) { element = u;} Maillon * getSuivant() { return suivant; } Maillon * getPrecedent() { return precedent; } void setSuivant(Maillon * suiv) { suivant = suiv; } void setPrecedent(Maillon * prec) { precedent = prec; } }; #endif
#include <QApplication> #include #include "Systeme.h" std::ostream& operator<<( std::ostream& out, const Bouteille& bouteille ) { out << "Bouteille : " << bouteille._volume << "cl, " << bouteille._contenu.toAscii().data(); return out; } std::ostream& operator<<( std::ostream& out, const Chaise& chaise ) { out << "Chaise : " << chaise._nbPieds << " pied(s), " << chaise._couleur.toAscii().data(); return out; } std::ostream& operator<<( std::ostream& out, const Table& table ) { out << "Table : " << table._longueur << "m x " << table._largeur << "m"; return out; } int main(int argc, char* argv[]) { QApplication app(argc, argv); Systeme sys; return app.exec(); }
//Systeme.h Liste<Materiel*> _materiel;
//Systeme.cpp _materiel.ajouter(new Bouteille(100, "eau")); _materiel.ajouter(new Chaise(4, "noir")); _materiel.ajouter(new Table(2.5, 1.5)); ...
std::cout << m->getElement() << std::endl;
std::cout << *(m->getElement()) << std::endl;
std::cout << *(m->getElement()) << std::endl;
const Materiel* & var;