Проверка времени компиляции того, определен ли метод как виртуальныйC++

Программы на C++. Форум разработчиков
Anonymous
Проверка времени компиляции того, определен ли метод как виртуальный

Сообщение Anonymous »

Я пытаюсь придумать способ проверки в производном классе, определен ли метод базового класса как «виртуальный». В основном я хотел бы иметь следующий код:

Код: Выделить всё

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.
Может ли кто-нибудь предложить решение, которое не будет задействован этот флаг?

Подробнее здесь: https://stackoverflow.com/questions/989 ... as-virtual

Вернуться в «C++»