Код: Выделить всё
class Top {
public:
virtual ~Top (){}
};
class Right : virtual public Top {
public:
void f () {}
};
class Left : virtual public Top {
public:
void f () {}
};
class Bottom : public Right, public Left {
public:
/*
* что надо написать чтобы выполнялось требование описанное в main
*/
};
int main (int, char**) {
Bottom b;
b.f(); // Требование: вызов Left::f()
}Я лично не нашел ничего лучше, чем добавить строку вида
Код: Выделить всё
void f () { Left::f();}но как-то оно совсем коряво выглядит. Кроме того, получается, что в условие задачи избыточно: класс Top лишний. У него ведь не методов, ни функций, поэтому конфликтов не предвидится, хотя два класса от него наследуются.
Короче, из чистого любопытства интересно было бы узнать правильный ответ
P.S.: задача предлагается Яндексом при приеме на работу C++ разработчиков.