Bonsoir

Certains programmes que j'avais compilés sans problème avec bcb5, édition professionnelle, ne se compilent plus avec bcb6, édition professionnelle.

J'ai créé une classe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 
class TFichier
{
  public :
    AnsiString FNom;
    AnsiString FRepertoire;
    AnsiString FNouveauNom;
 
    TFichier() { FRepertoire=""; FNom=""; FNouveauNom=""; };
 
     bool operator < (const TFichier& aFichier)
    {
      AnsiString asFRepertoire=FRepertoire.UpperCase(),
                 asRepertoire=(aFichier.FRepertoire).UpperCase();
 
      if(asFRepertoire < asRepertoire) return true;
      else
      {
        AnsiString asFNom=FNom.UpperCase(), asNom=(aFichier.FNom).UpperCase();
        if(asFRepertoire > asRepertoire) return false;
        else
        {
          if( (asFRepertoire + asFNom) < (asRepertoire + asNom)) return true;
          else return false;
        };
      }
    }
};
 
 
typedef list<TFichier> LISTFICHIER;
LISTFICHIER ListFichier;
A la compilation il y a une erreur générée par la ligne :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
ListFichier.sort();
Le message est :
[C++ Erreur] _function_base.[73]: E2093 'operator<' non implémenté dans le type 'TFichier' pour les argument du même type.

Ce qui est surligné dans _function_base.h est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
template <class _Tp>
struct less : public binary_function<_Tp,_Tp,bool> 
{
  bool operator()(const _Tp& __x, const _Tp& __y) const { return __x < __y; }
};
Quelqu'un sait-il pourquoi cela se produit avec bcb6 et pas bcb5

Merci