Я работаю над приложением c ++ и столкнулся с проблемой:
У меня есть класс B, полученный из абстрактного класса A, который имеет несколько методов обработки событий. Третий класс C является производным от B и должен переопределять некоторые из методов B. Есть ли способ неявно вызвать метод B перед вызовом метода C?
Диаграмма классов:
class A
{
virtual void OnKeyPress(event e)=0;
};
class B : public A
{
virtual void OnKeyPress(event e)
{
print("Keypressed: "+e)
};
};
class C : public B
{
void OnKeyPress(event e)
{
//DoSomething
}
}
Один из обходных путей, который я нашел, - это вызов метода родителя из C с использованием, скажем, B :: foo () внутри C :: foo (). Это работает, но разработчик должен не забыть добавить вызов в тело метода.
Другой способ - определить новый виртуальный метод, который дочерний элемент будет переопределять и который родительский объект будет вызывать внутри своего метода OnKeyPress.
Спасибо,
3mpty.