Safe C ++ - virtuelle Funktionen überschreibenC++

Programme in C++. Entwicklerforum
Anonymous
 Safe C ++ - virtuelle Funktionen überschreiben

Post by Anonymous »

Ich habe eine Basisklasse mit einer virtuellen Funktion und möchte diese Funktion in einer abgeleiteten Klasse überschreiben. Gibt es eine Möglichkeit, den Compiler zu überprüfen, ob die in der abgeleitete Klasse deklarierte Funktion tatsächlich eine Funktion in der Basisklasse überschreibt? Ich möchte etwas Makro hinzufügen oder etwas, das sicherstellt, dass ich nicht versehentlich eine neue Funktion deklariert habe, anstatt das alte zu überschreiben.

Code: Select all

class parent {
public:
virtual void handle_event(int something) const {
// boring default code
}
};

class child : public parent {
public:
virtual void handle_event(int something) {
// new exciting code
}
};

int main() {
parent *p = new child();
p->handle_event(1);
}
Hier Eltern :: Handle_Event () wird anstelle von child :: handle_event () aufgerufen, da die Methode des Kindes die const Deklaration verfehlt und daher eine neue Methode deklariert. Dies kann auch ein Tippfehler im Funktionsnamen oder im geringsten Unterschied in den Parametypen sein. Es kann auch leicht passieren, wenn sich die Schnittstelle der Basisklasse ändert und irgendwo abgeleitete Klasse nicht aktualisiert wurde, um die Änderung widerzuspiegeln. Irgendwelche hilfreichen Compiler -Flags (vorzugsweise für G ++)? Wie vermeiden Sie diese Probleme?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post