Suehprom
Grünschnabel
Hallo Leute,
ich hab ein riesen Problem und suche schon seid Tagen in Foren und Chats nach einer Lösung.
Ich möchte zwei Klassen schreiben, die Daten unterander austauschen können. D.h. eine erste Klasse "KlassA" soll auf Methoden einer zweiten Klasse "KlasseB" Zugriff haben und umgekehrt.
Mein Ansatz dazu war folgender:
class KlasseB; // KlasseB wird bekannt gemacht
class KlasseA{
public:
KlasseA(); //Konstruktor
~KlasseA(); //Destruktor
KlasseB* p; // Zeiger vom Typ KlasseB
void func_a();
void set_p(KlasseB* kl); //Methode setzt Zeiger auf eine Instanz des Typs "KlasseB"
...
private:
...
};
void KlasseA::set_p(KlasseB* kl){
p = kl;
}
...
class KlasseB{
public:
KlasseB(); //Konstruktor
~KlasseB(); //Destruktor
KlasseA* p; // Zeiger vom Typ KlasseA
void func_b();
void set_p(KlasseA* kl);
...
private:
...
};
...
int main(){
KlasseA kla;
KlasseB klb;
kla.set_p(&klb);
klb.set_p(&kla);
kla.p->func_b();
}
Dieses Programm läuft sogar. Von kla (KlasseA) aus wird eine Funktion von klb (KlasseB) aufgerufen,
ABER:
wollte ich nun INNERHALB einer Methode von kla (KlasseA) eine Methode aus der Klasse "KlasseB" aufrufen, gibt der Compiler mir einer Fehlermeldung: "Forward Declaration" - Weil die Methode aus KlasseB innherhalb von KlasseA noch nicht bekannt ist, nur die Klasse selbst, wurde zu Beginn mit "class KlasseB" bekanntgemacht.
Aber irgendwie muss es doch möglich sein, eine solche Beziehung zwischen zwei Klassen herzustellen, oder?
Weiß jemand, wie man dieses Problem beheben kann? Er würde mir wirklich sehr weiterhelfen
Tausend Dank im Vorraus! - Gruß MaX
P.S.: Wenn jemand ne Lösung findet, darf er sich was drauf einbilden!
- Ich hab inzwischen schon echt viele Leute gefragt - und alle halten es zumindest für machbar - aber keiner weiß, wie's geht...
ich hab ein riesen Problem und suche schon seid Tagen in Foren und Chats nach einer Lösung.
Ich möchte zwei Klassen schreiben, die Daten unterander austauschen können. D.h. eine erste Klasse "KlassA" soll auf Methoden einer zweiten Klasse "KlasseB" Zugriff haben und umgekehrt.
Mein Ansatz dazu war folgender:
class KlasseB; // KlasseB wird bekannt gemacht
class KlasseA{
public:
KlasseA(); //Konstruktor
~KlasseA(); //Destruktor
KlasseB* p; // Zeiger vom Typ KlasseB
void func_a();
void set_p(KlasseB* kl); //Methode setzt Zeiger auf eine Instanz des Typs "KlasseB"
...
private:
...
};
void KlasseA::set_p(KlasseB* kl){
p = kl;
}
...
class KlasseB{
public:
KlasseB(); //Konstruktor
~KlasseB(); //Destruktor
KlasseA* p; // Zeiger vom Typ KlasseA
void func_b();
void set_p(KlasseA* kl);
...
private:
...
};
...
int main(){
KlasseA kla;
KlasseB klb;
kla.set_p(&klb);
klb.set_p(&kla);
kla.p->func_b();
}
Dieses Programm läuft sogar. Von kla (KlasseA) aus wird eine Funktion von klb (KlasseB) aufgerufen,
ABER:
wollte ich nun INNERHALB einer Methode von kla (KlasseA) eine Methode aus der Klasse "KlasseB" aufrufen, gibt der Compiler mir einer Fehlermeldung: "Forward Declaration" - Weil die Methode aus KlasseB innherhalb von KlasseA noch nicht bekannt ist, nur die Klasse selbst, wurde zu Beginn mit "class KlasseB" bekanntgemacht.
Aber irgendwie muss es doch möglich sein, eine solche Beziehung zwischen zwei Klassen herzustellen, oder?

Weiß jemand, wie man dieses Problem beheben kann? Er würde mir wirklich sehr weiterhelfen
Tausend Dank im Vorraus! - Gruß MaX
P.S.: Wenn jemand ne Lösung findet, darf er sich was drauf einbilden!

Zuletzt bearbeitet: