Берём простейший код:
class B {
public:
void method(char c);
void method(int i);
};
class M {
int i;
};
class D: public B {
public:
void method(M);
};
int main() {
D d;
M m;
d.method('c'); // не работает
d.method(0); // тоже не работает
d.method(m); // работает
}И обнаруживаем, что для объекта производного класса методы базового нифига не вызываются (error: no matching function for call to `D::method(char)'), потому что они перекрыты одноимённым методом в производном.
И где, спрашивается, это ваше хвалёное наследование?
Да, если из D убрать одноимённый метод, то всё работает.
Кто знает, чем обусловлена такая странность?
Tags:
no subject
11 апреля, ок?