Ich versuche eine Möglichkeit zu finden, die abgeleitete Klasse zu überprüfen, ob eine Methode der Basisklasse als 'virtual' definiert ist. Grundsätzlich hätte ich gerne folgenden Code:Kompilierzeitüberprüfung, ob eine Methode als virtuell definiert ist
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;
};
Die Frage ist, wie implementiere ich diesen MAGIC_CHECK? Eine Lösung hierfür könnte die Verwendung des Flags -Woverloaded-virtual compilation sein. Kann jemand eine Lösung vorschlagen, die diese Fahne nicht einschließt?
Danke!
Wird es auch 'virtual'ness überprüfen? – iammilind
@iammilind was meinst du? –
@iammilind oh, ja ... es wird den Build brechen, wenn die Basismethode nicht virtuell ist. –