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++ Discussion :

Bug bizarre du compilateur C++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut Bug bizarre du compilateur C++
    Bon il faut dire que j'ai poussé un peu le compilateur dans ses dernier retranchement, m'enfin quand même :

    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
    class A {
      public:
         inline virtual int f() const;
    };
     
    class B : public A {
    };
     
    class C : public B {
      public:
        inline int f() const;
        inline int g() const;
    };
     
    int C::f() const {
      return B::f() + 1;
    }
    int C::g() const {
      return f();
    }
     
    int main() {
      C c;
     
      printf("g() = %d\n", c.g());
      return 0;
    }
    Bête comme il est VC7 (pourtant un bon compilateur hein !), il m'appelles A::f() au lieu de C::f() !!!

    Note : l'exemple n'a pas été testé, le bug est dans du code beaucoup + compliqué, mais je crois avoir mis le principe du problèmes dans mon exemple.

    EDIT : résolu, je crois avoir fait trop joujou avec les vtable ... désolé pour ce mauvais post.

  2. #2
    Invité
    Invité(e)
    Par défaut
    as tu trouvé exactement d'ou cela provenait, car le détail m'interresse...

  3. #3
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Je penses que c'est un faux bug.

    Sur l'application ou j'ai extrait l'exemple, je travailles entre 2 versions de bibliothèques compilées de telles sortes qu'elles n'ont pas la même structure de _vtable.

    Du coup ça fait n'importe quoi, enfin je penses. L'exemple ci dessus, copié et compilé tel quel fonctionne bien.

  4. #4
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Petit rappel (qui est peut-etre en fait le "bug"), pendant l'execution des constructeurs et des destructeurs, le type dynamique est celui en cours de construction/destruction et non le type final. Un appel a f() dans un constructeur de A va appeler A::f() meme si le type final sera un C.

  5. #5
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Je n'ai pas mon code sous la main.
    Je regarde ça dés ce soir.

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

Discussions similaires

  1. [Qt4] Bug bizarre avec QTableWidget
    Par Michaël dans le forum Qt
    Réponses: 12
    Dernier message: 26/04/2007, 16h48
  2. Bug bizarre (surement un virus)
    Par Muesko dans le forum Sécurité
    Réponses: 11
    Dernier message: 20/10/2006, 19h47
  3. Réponses: 1
    Dernier message: 04/10/2006, 19h49
  4. [CSS] Bug bizarre sous IE mais pas FF
    Par totofweb dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 13/09/2006, 20h40
  5. bug bizarre...
    Par gilux dans le forum Access
    Réponses: 7
    Dernier message: 15/05/2006, 15h01

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