Mammal * theArray[5] = {new Mammal, new Dog, ....}
-
Die Synthax zur Zuordnung von Werten an ein Array lautet:...
int theArray[5]; theArray[0]=20; theArray[1]=34; theArray[2]=19; theArray[3]=58; theArray[4]=90;
...und deren Kurzform:
int theArray[5]={20,34,19,58,90}
Ich hoffe ich liege bis hier richtig
Nun in Verbindung mit vererbten Klassen habe ich nun Probleme in diesem Beispiel:
#include <iostream> using namespace std; class Mammal { public: Mammal():itsAge(1) { } ~Mammal() { } virtual void Speak() const { cout << "Mammal spricht!!" << endl;} protected: int itsAge; }; class Dog : public Mammal { public: void Speak() const {cout << "Wuff" << endl;} }; class Cat : public Mammal { void Speak() const {cout << "Miau" << endl;} }; class Horse : public Mammal { void Speak() const {cout << "Wheeeeehhh" << endl;} }; class Pig : public Mammal { void Speak() const {cout << "Grunz" << endl;} }; int main () { Mammal * theArray[5]; theArray[0]=new Mammal; theArray[1]=new Dog; theArray[2]=new Cat; theArray[3]=new Horse; theArray[4]=new Pig;[/b] for(int i=1; i<5; i++) { theArray[i]->Speak(); } return 0; }
Diese Version ist Fehlerfrei kompilierbar!
Wenn ich nun die Mainfunktion...int main () { Mammal * theArray[5]; theArray[1]=new Dog; theArray[2]=new Cat; theArray[3]=new Horse; theArray[4]=new Pig; for(int i=1; i<5; i++) { theArray[i]->Speak(); } return 0; }
... folgendermassen abändere: ...
int main () { Mammal * theArray[5] = {new Mammal, new Dog, new Cat, new Horse, new Pig}; for(int i=1; i<5; i++) { theArray[i]->Speak(); } return 0; }
...erhalte ich einen Fehler. Kann mir jemand erläutern, warum genau?
Bitte keine Korrekturvorschläge für die Tiergeräusche, ich bin von fester Überzeugung, dass Pferde den Laut "Wheeeeeehh" von sich gebenDanke im Voraus
[EDIT]
int theArray[4]
korrigiert, war ein kleiner Tippfehler :> [/EDIT]
-
Welcher Fehler kommt denn? Ich würde den Destruktor noch virtual machen:
Tipp
-
Die Synthax zur Zuordnung von Werten an ein Array lautet:...
int theArray[4]; theArray[0]=20; theArray[1]=34; theArray[2]=19; theArray[3]=58; theArray[4]=90;
Ich hoffe, dass das nur ein Tippfehler ist.
<edit1>Quote hinzugefügt</edit1>
<edit2>edit1-Tag hinzugefügt</edit2>
-
Ich erhalte 18 Fehler (!) darunter grösstenteils Synthaxfehler, es scheint, als würde die main Funktion ganz wirr werden...
-
Was für nen Compiler? Also Syntaxfehler erhalte ich keinen einzigen. Versuch auch mal, direkt etwas mehr Infos zu geben, sonst kann man dir nicht helfen (z. B. Zeile etc.....).