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:
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.