C++ - wie Aufruf der Methode in der abgeleiteten Klasse aus der Basisklasse
Was ich will zu tun ist für Execute()
ausgeführt und vollendet es ruft die Base::Done()
ruft dann die Derived::Done()
. Ich Tue dies, weil Base
Klasse Execute
werde etwas tun, und wenn Ihre getan, rufen Sie die Derived::Done()
. Ich hoffe ich erkläre es richtig. Wie eine Art listener, der aufgerufen wird, wenn eine Aufgabe abgeschlossen ist. Ich bin irgendwie stecken wie die Base
Klasse aufrufen, die Derived
Klasse.
class Base
{
virtual void Done(int code){};
void Execute();
}
void Base::Execute()
{
}
class Derived : Base
{
void Done(int code);
void Run();
}
Derived::Done(int code)
{
}
void Derived::Run()
{
Execute();
}
Obwohl diese kann getan werden, sind Sie wahrscheinlich auf der Suche für das template Methode-Muster ("google").
InformationsquelleAutor adviner | 2013-06-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie eine Vorlage verwenden Methode:
Hier
Base
steuert, wie seine eigene und abgeleitete Methoden verwendet werdenExecute()
, und die abgeleitete Typen, die nur für die Implementierung einer Komponente, dass die Umsetzung über eine private virtuelle MethodeDoDone()
.InformationsquelleAutor juanchopanza
Die Basis-Methode der Klasse aufrufen können, die abgeleitete Methode ganz einfach:
Haben die Basisklasse Done() aufgerufen, bevor die abgeleitete Klasse, können Sie entweder nennen es als die erste Anweisung in der abgeleiteten Klasse eine Methode oder nicht-virtuelle idiom.
Hier ist ein Beispiel für den Aufruf es an der Spitze der abgeleiteten Klasse die Methode. Diese stützt sich auf die abgeleitete Klasse, es richtig zu machen.
Hier ist ein Beispiel für die Verwendung der nicht-virtuellen idiom:
Für welchen Teil des obigen Beispiels erhalten Sie eine Fehlermeldung? [Hier ist die Arbeit Quelle für die erste option: ideone.com/8Iw6Hl .]
InformationsquelleAutor Andy Thomas