Здравствуйте, Аноним, Вы писали:
А>Так вот напрягает писать постоянно явные вызовы, есть ли более удачное решение этой проблемы в С++?
AFAIK, хорошего нет. Правда не понятны границы несчастья.
Насколько у тебя глубокая иерархия, сколько функций, сколько иерархий и т. д.
Например, если иерархия ОЧЕНЬ глубокая и разветвлённая, то можно извратиться, например, так:
template<typename D, typename B>
struct pad : B { virtual void MyFunction(); };
template<typename D, typename B>
void pad<D, B>::MyFunction()
{
B::MyFunctionImpl();
D::MyFunctionImpl();
}
class Base {
public:
virtual void MyFunction() { MyFunctionImpl(); }
void MyFunctionImpl() { ... }
};
class Dir1 : public pad<Dir1, Base> {
public:
void MyFunctionImpl() { ... }
};
class Dir2 : public pad<Dir2, Base> {
public:
void MyFunctionImpl() { ... }
};
class Dir3 : public pad<Dir3, Dir2> {
public:
void MyFunctionImpl() { ... }
};
ну и дальше можно сколь угодно продвинуто извращаться
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском