Aufruf der abgeleiteten Klasse die Funktion aus der Basisklasse

class base
{
  public:
  virtual void start();
  virtual void stop();

  void doSomething() { start(); .... stop(); }
}

class derived : public base
{
  public:
   void start();
   void stop();
}

Aber wenn ich rufe doSomething() in der abgeleiteten Klasse ist es unter Verwendung Ihrer eigenen definition von Start() und Stop() - nicht abgeleitet lieben.

Will ich nicht umschreiben doSomething() in der abgeleiteten Klasse, denn es wäre identisch mit der base. Was mache ich falsch?

Sorry wenn das nicht klar.
Das Verhalten von Start() und Stop() in der abgeleiteten Klasse anders ist (es ist eine andere Maschine) - aber ich will das original Basis-Klasse doSomething() weil das hat sich nicht verändert. Es muss einfach nur auf start() und stop() mit der neuen abgeleiteten Klasse code.

Natürlich ist es verwendet seine eigene definition; Polymorphismus bei der Arbeit. Ihre Frage ist nicht ganz klar, warum würden Sie nicht wollen, zu nennen, die überschrieben Umsetzung?
Herzlich willkommen auf Stack Overflow. Bitte betrachten Sie die Ausgaben ein wenig mehr Zeit für die Vorbereitung Ihre Frage so, dass es genau zeigt, das Problem, das Sie diskutieren möchten. Das bedeutet, dass die Buchung eine kurze, kompilierbar und ausführbar Beispiel. Wenn es fertig ist, kopieren und einfügen von code-editor in Ihrem browser; nicht versuchen, die Komposition neuer code in Ihrem browser, da wirst du Fehler machen, und es wird nicht klar, der Leser, ob diese Fehler sind wirklich Teil der test-Fall.
Ich glaube, dass er verlängern möchte, Verhalten. In diesem Fall wird in der Implementierung der start() und stop() in der abgeleiteten Klasse aufrufen, Basis::starten(); base::stop(); bzw. und Griff die Besonderheiten, die für abgeleitet. Entweder das, oder anfangen und aufhören, Reine virtuelle und Kapseln das gemeinsame Verhalten in der geschützten Funktionen.
es ist ganz klar nicht zu einem compiler-Fehler, wenn das problem ist, dass es mit der falschen Umsetzung einer Funktion. Das wäre nicht möglich, zu wissen, zur compile-Zeit, also den eigentlichen code muss lauffähig. Aber im Allgemeinen hast du Recht — die Anforderung der post ausführbarer code wird verzichtet, wenn das problem ist, dass es nicht kompilieren.
Sind Sie sicher, dass dieser Satz, sagt, was Sie wollte, es zu sagen: "Aber wenn ich rufe doSomething() im abgeleiteten Klasse ist es unter Verwendung Ihrer eigenen definition von Start() und Stop() - nicht der abgeleitet lieben." [betonen mine]? Denn wenn Sie es tut, weiß ich nicht und verstehe auch nicht, was dein problem ist.

InformationsquelleAutor cpp help | 2011-02-01

Schreibe einen Kommentar