C++-Programmierung/ Eigene Datentypen definieren/ Klassen als Datenelemente einer Klasse

Aus Wikibooks

Wechseln zu: Navigation, Suche


Analog zu Basistyp-Variablen, können Sie auch Klassenobjekte als Member einer Klasse deklarieren. Dies funktioniert genau so, wie Sie es schon kennen.

Crystal Clear app terminal.png
class A{
    int zahl;
};

class B{
    A a_objekt;
};

Nun enthält die Klasse B ein Objekt der Klasse A.

[Bearbeiten] Verweise untereinander

Manchmal ist es nötig, dass zwei Klassen einen Verweis auf die jeweils andere enthalten. In diesem Fall muss die Klassendeklaration von der Klassendefinition getrennt werden. Wie auch bei Funktionen gilt, dass jede Definition immer auch eine Deklaration ist und das Deklaration beliebig oft gemacht werden können, während Definition nur einmal erfolgen dürfen.

Crystal Clear app terminal.png
// Deklaration von A
class A;

// Definition von A
class A{
    int zahl;
};

Um ein Klassenobjekt zu Deklarieren, muss die gesamte Klassendefinition bekannt sein. Wenn Sie hingegen nur einen Zeiger oder eine Referenz auf ein Klassenobjekt deklarieren möchten, genügt es, wenn die Klasse deklariert wurde.

Crystal Clear app terminal.png
class A; // Deklaration von A

class B{
    // B enthält eine Referenz auf ein A-Objekt
    A& a_objekt;
};

class A{
    // A enthält ein B-Objekt
    B objekt;
};

Falls Ihnen jetzt die Frage im Hinterkopf herumschwirrt, ob es möglich ist, dass beide Klassen ein Objekt der jeweils anderen enthalten, dann denken Sie noch mal darüber nach, was diese Aussage bedeuten würde. Die Antwort auf diese Frage ist selbstverständlich nein.


Persönliche Werkzeuge