Bonjour,
j'essaye de trier une liste de pointeurs sur des objets Article avec un foncteur (ce qui doit être la seule possibilté). Malheureusement, à la compilation, j'ai le message suivant :
Code :
- Compiling...
- main2.cpp
- E:\monchemin\main.cpp(59) : error C2664: 'void __thiscall std::list<class Article *,class std::allocator<class Article *> >::sort(struct std::greater<class Article *> )' : cannot convert parameter 1 from 'struct Compar' to 'struct std:
- :greater<class Article *>'
- No constructor could take the source type, or constructor overload resolution was ambiguous
- Error executing cl.exe.
|
Mon programme est le suivant :
Code :
- #include <list>
- #include <iostream>
- using namespace std;
- class Article
- {
- public:
- Article() {}
- double prix()
- {
- return (_prix);
- }
- void new_prix(double _new_prix)
- {
- _prix = _new_prix;
- }
- protected:
- double _prix;
- };
- struct Compar
- {
- bool operator()(Article* left,Article* right)
- {
- return ((left->prix())<(right->prix()));
- }
- };
- int main()
- {
- int i;
- Article* art;
- list<Article*> list_art;
- list<Article*>::iterator it;
- for(i=0;i<5;i++)
- {
- art = new Article;
- art->new_prix(rand()%10);
- list_art.push_back(art);
- }
-
- for(it=list_art.begin();it!=list_art.end();it++)
- {
- cout << (*it)->prix() << endl;
- }
- list_art.sort(Compar());
- for(it=list_art.begin();it!=list_art.end();it++)
- {
- cout << (*it)->prix() << endl;
- }
- return (1);
- }
|
Sauriez vous d'où provient mon problème ? Je travaille avec Visual C++ 6.0 ce qui peut aussi générer des erreurs avec la STL je crois !
Merci d'avance de votre aide !