Моя упрощенная иерархия выглядит так:
class A {
public:
virtual ~A() {}
virtual void Method() {}
};
class B1:virtual public A {
public:
virtual void Method() {/*...*/}
/*...*/
};
class B2:virtual public A {
public:
/*...*/
};
class C:public B1, public B2 {
public:
}; // <-- ***
int main() {
return 0;
}
в месте
// <-- ***
компилятор (VC7.0) пишет:
a.cpp(21) : warning C4250: 'C' : inherits 'B1::B1::Method' via dominance
a.cpp(10) : see declaration of 'B1::Method'
этот варнинг говорит, что у родителей класса есть методы с одинаковыми именами,
может кто-то подробно разъяснить, что это за варнинг и как с ним боротся.
и сколько ф-ций в таком варианте будет в VMT?
чую я, что где-то поблизости есть грабли
... << RSDN@Home 1.1.3 stable >>