Suche bestimmten Typecat
-
Hallo folgende Funktion
int main(void) { //Dhlosh Metablhton Bird Tweety(tweety_speed); Cat Silvester(sylvester_init_speed); Cartoon* Cartoon[2]; // Cartoon[0] = &Tweety; Cartoon[1] = &Silvester; //Kurio Meros while(!felts(cartoon,2)) { cartoon[0]->first_move(); cartoon[1]->first_move(); cartoon[0]->second_move(); cartoon[1]->secondMove(); } cout << "The End!" << endl; return (0); }
Bird und Cat haben als unterklasse Cartoon, nun ich habe bei Cartoon, virtual Funktionen deklariert die bei Bird und Cat zu finden sind. Es sollte normalerweise funktioniere. Aber ich habe irgendwo in ein buch gesehen das es für das:
Bird Tweety(tweety_speed);
Cat Silvester(sylvester_init_speed);
Cartoon* Cartoon[2];
//
Cartoon[0] = &Tweety;
Cartoon[1] = &Silvester;Ein speziellen typecast gibt wo man den platz in Cartoon[2] erweitern kann, aber ich finde die seite im buch nicht mehr, kennt fileicht jemand diesen typecast?.
-
1. Cartoon muss doch die Basisklasse sein und keine Unterklasse, denn man kann immer eine Basisklasse in eine abgeleitete Klasse umwandeln aber nicht immer umgekehrt.
Cartoon* Cartoon[2]={new Tweety(tweety_speed), new Silvester(sylvester_init_speed)};
Ist doch einfacher
3.
Ein speziellen typecast gibt wo man den platz in Cartoon[2] erweitern kann, aber ich finde die seite im buch nicht mehr, kennt fileicht jemand diesen typecast?.
Versteh ich nicht ganz
Formulier mal um wenn es geht. Meinst du jetzt dass Cartoon[2] dynamisch ist nicht die größe vorbestimmt ist???
-
KaraHead schrieb:
Cartoon* Cartoon[2]={new Tweety(tweety_speed), new Silvester(sylvester_init_speed)};
Aber ineffizienter (weil Heap-Allokierung) und unsauber, weil die beiden nicht freigegeben werden. Master User hats schon genau richtig gemacht
-
Operator void glaubst du das das 100% prozent funktionieren wird ich versuche hier 4 stunden mein prog zum laufen zu brigen und wenn es spät wird, ist keiner hier im forum um mir zu helfen, wenn die main nicht das macht was ich will. Also wird das 100% funktionieren so wie ich es habe?. Weil ich bin mir hier nicht 100% sicher.