Klassen-Problem
-
Hallo zusammen,
ich stehe gerade voll auf dem Schlauch. Ich habe zwei Klassen:class A { ... ... } class B { int x; ... A cA; }Jetzt würde ich gerne aber in einer Memberfunktion von A auch z.B. auf die Variable x von der Klasse B zugreifen. Ich hab mir überlegt, dass ich das vielleicht so machen könnte:
class A { B pointer; public A(B pointerToB) { pointer = pointerToB; } ... } class B { int x; ... A cA = new A(this); }Aber B wird ja erst nach A deklariert. A weiß also nicht, dass es B gibt...oder?
Ist das irgendwie möglich?Danke Tim
-
edit: Nix.
-
Mein Browser hat gesponnen und hats abgeschickt bevor ich fertig war...
-
Meinst du dass die Member von cA Zugriff auf x haben sollen? Ja, da gibt es dutzende Möglichkeiten, die naheliegendste wäre, dass man x einfach übergibt.
-
Joa nicht nur auf x sondern auf alle Membervariablen von B. Hab meinen Hauptbeitrag nochmal editiert... vielleicht ist est jetzt verständlicher was mein Problem ist... Das Problem ist das ich nicht kapiere wie ich einer Klasse die vor einer anderen dekleriert ist "klar machen kann", dass eine betsimmte Klasse nach ihr kommt... Bei Funktionen geht das ja einfach:
void Do(void); int ABC(void) { Do(); } void Do(void) { ... }Ich kann Do() in ABC() aufrufen , da ich Do davor deklariert habe. Geht das auch mit Klassen?
-
Aber B wird ja erst nach A deklariert. A weiß also nicht, dass es B gibt...oder?
Forward declaration, also:
class A; class B;
-
Danke schonmal. Ich bekomm dann aber den Fehler:
"error C2079: 'cKunden::MainClass' verwendet undefiniertes class 'cMainClass'"sieht so im Code aus:
Datei1.h:class cMainClass; class cKunden { public: ... cMainClass MainClass; ... };Datei2.h:
#include "Datei1.h" class cMainClass { cKunden Kunden; };
-
Das geht so nicht:
cMainClass enthält cKunden enthält cMainClass enthält cKunden enthält cMainClass enthält cKunden enthält cMainClass enthält cKunden ...Dort, wo nicht wirklich eine Komposition besteht, muss eine Referenz oder ein Zeiger hin.
-
Ok danke habs jetzt hingekriegt!