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
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);
};
.cpp :
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();
}
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
template <class _Tp>
struct less : public binary_function<_Tp,_Tp,bool> 
{
  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x < __y; }
};
Voici le code appelant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
vector<TDetails> details;
(...)
sort(details.begin(), details.end());
Où donc qu'elle est l'erreur ?