kostenloser Webspace werbefrei: lima-city


Methode der erbenden Klasse statt Basis aufrufen

lima-cityForumProgrammiersprachenC/C++ und D

  1. Autor dieses Themas

    na-web

    na-web hat kostenlosen Webspace.

    Ich bin noch relativ neu zu c++ und muss für ein Schulprojekt nun folgendes umsetzen: Ich will über ein Array dynamischer Länge iterieren und dabei jeweils eine Methode des Objekts aufrufen, das einer erbenden Klasse meiner Basisklasse entspricht (die Methode ist für alle erbenden Klassen vorhanden). Leider hat das nicht ganz funktioniert, weshalb ich versucht habe das Problem erstmal zu vereinfachen und die Länge auf ein Objekt festgelegt:

    class Base {
      public:
      virtual void doSmth() {
        cout << "base";
      }
    };
    class Derived : public Base {
      public:
      void doSmth() {
        cout << "derived";
      }
    };
    int main() {
      Base * bases;
      bases = new Base[1];
      bases[0] = Derived();
      Derived().doSmth();
      bases[0].doSmth();
    }

    Dieser Code gibt bei mir allerdings als Ergebnis "derived" und dann "base", was wohl bedeutet, dass für das Objekt im Array die Methode der Basisfunktion aufgerufen wurde. Da ich noch etwas neu zu c++ bin, verstehe ich nun nicht ganz, wieso das nicht funktioniert. Kann mir da jemand helfen?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. h***********r

    Hier gibt es so ein ähnliches Beispiel inklusive der Erklärungen dazu:
    https://en.cppreference.com/w/cpp/language/virtual
  4. Autor dieses Themas

    na-web

    na-web hat kostenlosen Webspace.

    Ich hab's mir angeschaut und blick noch nicht zu 100% durch, aber ich hab das Problem lösen können. Danke für die Hilfe!
  5. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!