Я пытаюсь найти способ проверить в производном классе, определяется ли метод базового класса как «виртуальный». В основном я хотел бы иметь следующий код:
class A {
virtual void vfoo() {}
void foo() {}
virtual ~A() {}
};
class B : public A {
virtual void vfoo() {
MAGIC_CHECK(m_pA->vfoo()); // succeed
// code
m_pA->vfoo();
// code
}
virtual void foo() {
MAGIC_CHECK(m_pA->foo()); // fail compilation because foo is not virtual!
// code
m_pA->foo();
// code
}
A * m_pA;
};
Вопрос в том, как мне реализовать этот MAGIC_CHECK?
Одним из решений для этого может быть использование -Woverloaded-virtual флага компиляции.
Кто-нибудь может предложить решение, которое не будет включать этот флаг?
Спасибо!