Gegenseitig beinhaltende Klassen

andand

Grünschnabel
Hallo!

Ich habe folgendes Problem: fuer mein Programm benoetige ich 2 Klassen, die sich gegenseitig wieder beeinhalten. Konkretes Beispiel:

Eine Schule bietet verschiedene Kurse an und hat Schueler; die zwei Klassen waeren also Kurse und Schueler.
Ein Kurs enthaelt Schueler, in der Klasse Schueler sollen aber auch die Kurse gespeichert werden, die der Schueler belegt.

Kurz ausgedrueck habe ich folgendes Problem, der Compiler meldet einen Fehler, da er in Klasse1 noch nicht Klasse2 kennt.


class klasse1
{
private:
klasse2 k2;
};

class klasse2
{
private:
klasse1 k1;
};


Wie koennte ich das loesen? Ich wuerde gerne die Struktur beeibehalten, vielleicht gibt es einen Befehl, der den Compiler die Struktur erklaert?

Danke!
Andreas
 
Das geht so nicht.

Stell dir den Speicher vor, ein Objekt Schüler enthält ein Objekt Kurs. Dieses enthält ein Objekt Schüler, welches wiederum ein Objekt Kurs enthält. usw....

Mindestens eins der Objekte kann das anderes Objekt nur als Pointer-Member besitzen. In dem Fall geht es dann auch mit Forward-Deklarationen weiter.

Also z.Bsp. Klasse Schüler:

Code:
#include "Kurs.h"

class Schueler
{
  private:
    Kurs   m_Kurs;
};


Klasse Kurs:

Code:
// die Forwarddeklaration!
class Schueler;

class Kurs
{
  private:
    Schueler*   m_pSchueler;
};
 
Zurück