Pour trier un vector d'une classe que j'ai créée, j'ai besoin de surcharger l'opérateur <. C'est la première fois que je fais un truc pareil et ça marche pas
Voici le code :
.h
.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 class TDetails { private: int Type; AnsiString FileName, Path, Version; TDateTime InstallDate; public: bool operator < (const TDetails &d); };
Ma classe se compile bien mais lors de la compile de celle qui trie le vector, j'ai une erreur "'operator<' non implémenté dans le type 'TDetails' pour les arguments du même type", avec la ligne suivante en erreur dans _function_base.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 bool TDetails::operator < (const TDetails &d) { if (d.GetVersion()!="") return Version < d.GetVersion(); return InstallDate < d.GetInstallDate(); }
Voici le code appelant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template <class _Tp> struct less : public binary_function<_Tp,_Tp,bool> { bool operator()(const _Tp& __x, const _Tp& __y) const { return __x < __y; } };
Où donc qu'elle est l'erreur ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 vector<TDetails> details; (...) sort(details.begin(), details.end());![]()
Partager