Я работаю над C++-приложением, и я столкнулся с проблемой: У меня есть класс B, полученный из абстрактного класса A, который имеет некоторые методы обработки событий. Третий класс C получен из B и должен переопределять некоторые из методов B. Есть ли способ неявно вызвать метод B перед вызовом C?Принудительное выполнение родительского метода до метода child без явного вызова
Диаграмма классов:
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
}
}
Один из обходного пути я понял, это вызвать метод родительского из С помощью, скажем, B :: Foo() внутри C :: Foo(). Это работает, но разработчик должен помнить, чтобы добавить вызов в тело метода.
Другой - определить новый виртуальный метод, который будет переопределен дочерним элементом и что родитель вызовет его метод «OnKeyPress».
Спасибо, 3mpty.
это именно то, что я писал по этому вопросу: ( Во всяком случае, спасибо – 3mpty
Во второй форме 'B :: OnKeyPress()' не должен быть виртуальным. (Тогда это становится методом шаблона _Template Pattern_, BTW.) – sbi