Бьерн Страуструп.
Язык программирования С++
167
};
Теперь функция foreman::print() не будет вызываться, хотя почти наверняка предполагался вызов
именно этой функции. С помощью небольшой хитрости можно преодолеть эту трудность:
class foreman : public employee {
typedef employee inherited;
//
...
void
print();
};
class manager : public foreman {
typedef foreman inherited;
//
...
void
print();
};
void manager::print()
{
inherited::print();
//
...
}
Правила областей видимости, в частности те, которые относятся к вложенным типам, гарантируют, что
возникшие несколько типов inherited не будут конфликтовать друг с другом. В общем-то дело вкуса,
считать решение с типом inherited наглядным или нет.
Достарыңызбен бөлісу: