Du bist nicht angemeldet.

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

Anonymous

unregistriert

1

12.10.2004, 16:26

Problem mit Strukturierung

Hallo
Ich habe jetzt zwei Klassen, mit Namen CKlasse1 und CKlasse2. Jetzt will ich diese zwei Klassen in einer neuen Klasse CKlasseGesamt vereinen. Dies ist kein Problem, aber wenn ich jetzt die Klasse CKlasseGesamt instantiiere, will ich auch noch auf die Methoden der Klassen CKlasse1 und CKlasse2 zugreifen, ohne dass ich alle Methoden in CKlasseGesamt definiere und dann an die entsprechenden Klassen (CKlasse1 und CKlasse2) weiterleiten muss. Ich hoffe, dass es verständlich war.
Jo

Till

Alter Hase

Beiträge: 378

Wohnort: Lincoln College, Oxford

Beruf: Student

  • Private Nachricht senden

2

12.10.2004, 20:26

Was meinst du denn mit "vereinen"? CKlasse1 und CKlasse2 als Member von CKlasseGesamt? Du kannst ja auch vererben:

C-/C++-Quelltext

1
2
3
4
class CKlasseGesamt : public CKlasse1, public CKlasse2
{
   ...
}


Dann können auch die Methoden der Basisklassen aufgerufen werden, da sie immer noch "gelten", also "Teil" der abgeleiteten Klasse sind!
DOMINVS ILLVMINATIO MEA
---
Es lebe unmanaged Code!
---
>> Meine Uni <<

Anonymous

unregistriert

3

13.10.2004, 14:30

Ja so habe ich es gemeint. In diese Richtung habe ich es auch probiert, aber ich habe die zweite Klasse auch mit einem Doppelpunkt dahinter gesetzt. Danke
Jo

4

16.10.2004, 19:53

Bei Mehrfachvererbung muss man aber schön aufpassen. Das kann schnell in die Hose gehen. Beide Klassen dürfen keine gleichnamigen Methoden haben und au Parameter. Mein dürfen schon, aber dann hast ein Problem beim Zugriff.

Beispiel:

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
class CKlasse1
{
protected:
  int i;
};


class CKlasse2
{
protected:
  int i;
};

class CAll : public CKlasse1, public CKlasse2
{
public:
  int getI() { return i; }
};

void foo()
{
  CAll c;

  std::cout << c.getI() << std::endl;
}

Jetzt hast du ein Problem. Denn die Member i ist zweimal vorhanden. Es ist daher nicht bestimmt welches i genommen wird. Man muss daher höllisch aufpassen. Für diesen zweck gibt es die Virtuelle Vererbung. Ich schlage vor das du dir das mal in Ruhe durchliest und anschaust welche Probleme bei Mehrfachvererbung auf dich zukommen.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Werbeanzeige