Polymorphie (virtuelle Methoden)



  • //Virtuelle Methoden
    #include <iostream>
    #include <conio.h>
    
    using namespace std;
    
    class Mammal
    {                //Zeile 8
      protected:
                int itsAge;
      public:
             //Konstruktor/Destruktor
             Mammal():itsAge(1) {cout<< "Mammal-Konstruktor..." <<endl;}
             ~Mammal() {cout<< "Mammal-Destruktor..." <<endl;}
    
             void Move() const {cout<< "Mammal geht einen Schritt..." <<endl;}
             virtual void Speak() const {cout<< "Mammal spricht!" <<endl;
    };
    
    class Dog : public Mammal
    {                         //Zeile 21
     public:
            //Konstruktoren/Destruktoren
            Dog() {cout<< "Dog-Konstruktor..." <<endl;}
            ~Dog() {cout<< "Dog-Destruktor..." <<endl;}
    
            //Andere Methoden
            void WagTail() {cout<< "Schwanzwedeln..." <<endl;}
            void Move() const;
            void Speak() const {cout<< "Wuff...." <<endl;}
    };
    
    int main()
    {
        Mammal *pDog = new Dog;  //erzeugt einen Zeiger pDog auf Mammal, weist ihm
                                 //aber die Adresse eines neuen Dog-Objekts zu!!!!!
        pDog -> Move();
        pDog -> Speak();
    
        getch();
        return 0;    
    }
    

    21 invalid use of undefined type class Mammal' 8 forward declaration ofclass Mammal'

    kann mir bitte einer den Fehler zeigen ich sehe ihn nicht.
    gruß alex

    ps: habe die Klassen nur zu Testzwecken in die selbe Datei geschrieben



  • In Zeile 17 fehlt eine geschweifte Klammer 😉



  • oooohhh! 😮

    jetzt seh ichs auch 🙂

    danke dir


Anmelden zum Antworten