Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 |
class C_Raumschiff { protected: char m_Name[50]; public: void m_RaumschiffBenennen(); }; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 |
void C_Raumschiff::m_RaumschiffBenennen() { cout << "Geben sie ihrem Raumschiff einen Namen: " << endl; cin.ignore(); cin.get (m_Name, 49); } |
C-/C++-Quelltext |
|
1 2 3 4 5 |
SpielerRaumschiff = new C_Jaeger; *Kontostand -= JaegerPreis; RaumschiffGekauft = true; cout << "Ihr derzeitiger Kontostand: " << *Kontostand << endl; SpielerRaumschiff.m_RaumschiffBenennen();//hier liegt der Fehler |
C-/C++-Quelltext |
|
1 2 3 |
C_Raumschiff *p_SpielerRaumschiff = 0;// das Raumschiff des Spielers RaumschiffKaufen(&i_Kontostand, p_SpielerRaumschiff); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
class C_Raumschiff // Basis-Klasse für ein Raumschiff { protected: int m_Treibstoff; public: void WieVielTreibstoff(); }; class C_Jaeger : public C_Raumschiff // Diese Klasse erbt die Member von C_Raumschiff { protected: int m_Torpedos; public: void WieVieleTorpedos(); }; void KaufeJaeger(C_Jaeger* pNeuerJaeger) // Mit dieser Funktion wird ein neues Raumschiff vom Typ C_Jaeger gekauft { pNeuerJaeger = new C_Jaeger; pNeuerJaeger->WieVielTreibstoff(); // Hier wird die von C_Raumschiff geerbte Methode aufgerufen. } void KaufeRaumschiff(C_Raumschiff* pNeuesRaumschiff) // Mit dieser Funktion soll ein neues Raumschiff gekauft werden. { pNeuesRaumschiff = new C_Jaeger; // Das hier funktioniert nicht! Ein Zeiger für C_Raumschiff kann nicht auf C_Jaeger zeigen. pNeuesRaumschiff->WieVielTreibstoff(); } int main () { // Funktioniert: CJaeger* pJaeger = NULL; KaufeJaeger(pJaeger); pJaeger->WieVieleTorpedos(); // Funktioniert nicht: CRaumschiff* pRaumschiff = NULL; KaufeRaumschiff(pRaumschiff); pRaumschiff->WieVieleTorpedos(); return 0; } |
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »SaRu« (19.07.2011, 16:29)
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
int main () { // Variablen // CRaumschiff *Schiff; // Ein Raumschiff Schiff = new CMinenleger; // Ein Minenleger soll es sein // Minenleger führt einige Aktionen aus Schiff->Starten (); Schiff->Landen (); delete Schiff; // Raumschiff zerstören return 0; |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Rexona for men« (19.07.2011, 16:47)
SpielerRaumschiff.m_RaumschiffBenennen();//hier liegt der Fehler
C-/C++-Quelltext |
|
1 |
SpielerRaumschiff->m_RaumschiffBenennen(); |
C-/C++-Quelltext |
|
1 2 |
SpielerRaumschiff->m_RaumschiffBenennen();//hier lag der Fehler (*SpielerRaumschiff).m_RaumschiffBenennen();//hier lag der Fehler |
Zitat von »SaRu«
Der Zeiger kann nicht auf ein Objekt der Klasse C_Jaeger zeigen, auch nicht wenn diese Klasse von C_Raumschiff erbt.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Rexona for men« (19.07.2011, 17:02)
Community-Fossil
p_SpielerRaumschiff ist ein Zeiger auf ein Objekt der Klasse C_Raumschiff. Der Zeiger kann nicht auf ein Objekt der Klasse C_Jaeger zeigen, auch nicht wenn diese Klasse von C_Raumschiff erbt.
C-/C++-Quelltext
1 2 SpielerRaumschiff->m_RaumschiffBenennen();//hier lag der Fehler (*SpielerRaumschiff).m_RaumschiffBenennen();//hier lag der Fehler
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NachoMan« (19.07.2011, 17:21)
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
p_SpielerRaumschiff ist ein Zeiger auf ein Objekt der Klasse C_Raumschiff. Der Zeiger kann nicht auf ein Objekt der Klasse C_Jaeger zeigen, auch nicht wenn diese Klasse von C_Raumschiff erbt.
Quellcode Beispiel:
C-/C++-Quelltext
1 2 3 4 5 6 7 8 class C_Raumschiff // Basis-Klasse für ein Raumschiff {}; class C_Jaeger : public C_Raumschiff // Diese Klasse erbt die Member von C_Raumschiff {}; C_Raumschiff* pNeuesRaumschiff; pNeuesRaumschiff = new C_Jaeger; // Das hier funktioniert nicht! Ein Zeiger für C_Raumschiff kann nicht auf C_Jaeger zeigen.
Vielleicht verdeutlicht das noch mal wie du in deinem Fall mit Klassen, Zeigern und Vererbung umgehen musst.
Werbeanzeige