Проверка времени компиляции того, определен ли метод как виртуальный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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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