Im Gegensatz zu virtuellen Memberfunktionen benötige ich eine Lösung, bei der eine Funktion, die bei jeder Ableitung der Ebenenklasse implementiert ist, für einen späteren Aufruf durch die Basisklasse registriert werden kann. (Nicht nur die am weitesten abgeleitete Implementierung)
Um dies zu tun, habe ich darüber nachgedacht, Mechanismen für abgeleitete Klassen zur Verfügung zu stellen, um ihre Funktion bei der Basisklasse zu registrieren, etwa während des abgeleiteten Klassenkonstruktors.
Ich habe jedoch Probleme mit dem Memberfunktionszeigerargument. Ich dachte, dass Derived von Base abgeleitet ist, der this
-Zeiger sollte automatisch gecastet werden.
Kann dies in der Nähe von dem gemacht werden, was ich versuche oder brauche ich die statischen Memberfunktionen void *
und static_cast
?
Compilerfehler:
%Vor%Dies ist nicht erlaubt mit oop. Verhaltensumschaltung wird erreicht, indem die Klasse des Objekts zum Zeitpunkt der Objekterstellung polymorph gemacht wird.
Wenn Sie nach dem Erstellen von Objekten ein Verhaltenswechsel durchführen müssen, können Sie das dynamische Verhalten auf eine andere Gruppe polymorpher Klassen umstellen und einen "Zeiger" auf eine Instanz einer Klasse mit dem richtigen Verhalten halten. Bitte Google das "dekorierte Klasse" Software-Muster.
Tags und Links c++ member-function-pointers