IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Problème bcb6 et STL


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Par défaut Problème bcb6 et STL
    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

  2. #2
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    BCB6 utilise une nouvelle version de la STL (STLport) si tu veux que ton programme fonctionne avec la STL de RogueWAVE utilise la directive de compilation suivante _USE_OLD_RW_STL
    cordialement
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    bool operator()(const _Tp& __x, const _Tp& __y) const { return __x < __y; }
    La magie des const

    bool operator < (const TFichier& aFichier) const
    Quelqu'un sait-il pourquoi cela se produit avec bcb6 et pas bcb5
    Parce que BCB 5 était très peu regardant vis à vis des erreurs liées aux consts.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Par défaut
    Merci, mais comment utilise-t-on la directive :
    BCB6 utilise une nouvelle version de la STL (STLport) si tu veux que ton programme fonctionne avec la STL de RogueWAVE utilise la directive de compilation suivante _USE_OLD_RW_STL
    [/code]

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Je ne connais pas la STL de BCB plus que ça, mais je pense que l'utilisation de cette directive ne sert qu'à compiler des programmes buggés ecrits sous BCB5.
    Donc mieux vaut résoudre ses erreurs que chercher à utiliser une STL moins stricte et plus buggée.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 481
    Par défaut
    Comme l'a indiqué Loulou24, en ajoutant le terme const :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    bool operator < (const TFichier& aFichier) const
    Il n'y a plus de message d'erreur.

    Merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème avec la STL sous solaris
    Par sofiane80 dans le forum SL & STL
    Réponses: 12
    Dernier message: 01/12/2009, 14h26
  2. Problème de raccourcis BCB6 Pro
    Par onap dans le forum C++Builder
    Réponses: 1
    Dernier message: 29/11/2004, 11h16
  3. [BCB6]Problème Dimensions Bitmap
    Par vsavoir dans le forum C++Builder
    Réponses: 10
    Dernier message: 09/11/2004, 13h35
  4. problème de références _ptr dans une map STL
    Par Mr_Tyu dans le forum CORBA
    Réponses: 1
    Dernier message: 10/08/2004, 10h39
  5. STL : std::set problème avec insert ...
    Par Big K. dans le forum MFC
    Réponses: 13
    Dernier message: 08/11/2003, 01h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo