Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Vererbung von Funktionen und Polymorpie

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
06.04.2004, 17:02 Uhr
~Joschi
Gast


Ich hab ein Array von i Objekten der Klasse 'Zeichen':

C++:
zeichen = new Zeichen[i];


Nun soll das letzte Zeichen ein Objekt der Klasse 'Ziffer' sein:

C++:
zeichen[i-1] = *(new Ziffer);


wobei durch

C++:
class Ziffer : public Zeichen


alle Methoden von Zeichen auch an Ziffer vererbt werden.
Nun hat jedes Zeichen die Methode

C++:
virtual void Zeichen::m_Update() { y = x; }


und jede Ziffer die Methode

C++:
void Ziffer::m_Update() { x = y; }


Wenn ich jetzt den Zeichen-Array durchgehe mit

C++:
for (k=0; k<i; k++) zeichen[k].m_Update();


wird immer die Methode Zeichen::m_Update() aufgerufen aber nicht beim letzten Zeichen (der Ziffer) die Methode Ziffer::m_Update().

Kann mir jemand sagen was ich falsch mache und wie ich erreichen kann, das in einem Array verschiedene Klassen unterkommen und jeweils die entsprechenden Methoden ausgeführt werden?

Danke,
Joschi


Bearbeitung von Pablo:

[ /cpp ] tag eingefügt


Dieser Post wurde am 06.04.2004 um 17:17 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
06.04.2004, 17:35 Uhr
typecast
aka loddab
(Operator)


Deklarier mal die Methode m_Update() von Ziffer auch als virtual. Ich bin mir nicht sicher aber ich glaube daran liegt es.
Poste wenn es funktioniert hat, dann poste nochmal und ich werde dir die Erklärung geben, die ich im Kopf habe.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.04.2004, 18:35 Uhr
~Joschi
Gast



Zitat:
typecast postete
Deklarier mal die Methode m_Update() von Ziffer auch als virtual. Ich bin mir nicht sicher aber ich glaube daran liegt es.
Poste wenn es funktioniert hat, dann poste nochmal und ich werde dir die Erklärung geben, die ich im Kopf habe.


nope, funktioniert leider immer noch nicht :-(
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.04.2004, 18:39 Uhr
stephanw
localhorst


Um Polymorphie zu erreichen (das was Du willst) muss auf das Objekt per Zeiger oder Referenz zugegriffen werden. Dein Array ist aber ein Array von Objekten, nicht von Zeigern auf Objekte. Oder Du bildest bei jedem Durchlauf einen Zeiger auf ein Objekt und benutzt diesen dann
--
Reden ist Schweigen und Silber ist Gold.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.04.2004, 00:18 Uhr
~Joschi
Gast



Zitat:
stephanw postete
Um Polymorphie zu erreichen (das was Du willst) muss auf das Objekt per Zeiger oder Referenz zugegriffen werden. Dein Array ist aber ein Array von Objekten, nicht von Zeigern auf Objekte. Oder Du bildest bei jedem Durchlauf einen Zeiger auf ein Objekt und benutzt diesen dann


Jawoll, über einen Array von Zeigern klappts vorzüglich!! Vielen Dank!!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: