Kaskaden Struktur

FJK

Erfahrenes Mitglied
Hallo,
folgendes Problem:

A.h
Code:
#include "B.h"

class A
{
public:
  B* b;
};

B.h
Code:
#include "A.h"

class B
{
public:
  A* b;
};

mir ist klar warum das nicht geht, jedoch benötige ich diese Struktur...
gibt es irgend eine Möglichkeit dies Umzusetzen?
Bin schon Kurz davor von A eine Kopie zu schreiben um diese zu nutzen...
versuche mit #prama once und #ifndef... schlugen leider fehl.
nutze Visual Studio...

danke
 
Ok danke er kompiliert es schon mal :)
aber...
nehmen wir an B besitzten einen Member c;
dann könnte ich ja nicht:
irgendwo in der A.cpp
Code:
b->c = 42;
schreiben
da er ja nicht weißt das die Klasse B in A.h nicht die Klasse B mit dem Member c ist, oder?
das B in A.h ist ja nur eine lehre Hülle...
 
Forward Declaration funktioniert nur, wenn man Pointer oder Referenzen eines Objektes angibt.

Wenn ein Objekt als Instanz benutzt wird, muss der Compiler die Klassendefinition dann doch kennen.
 
Ja eben, wie kann ich das in meine Struktur machen?
Mal so nebenbei wozu brauch ich ein Zeiger auf eine Instanz die ich nicht nutzen kann...?

Bzw. könnte ich das nicht erstmal in den B dummy schieben und dann anschließend in die richtige B Klasse casten?
 
Zuletzt bearbeitet:
Die Forward-Declaration ist nur für den Header. Im Implementations-Teil (also dem .cpp-File) musst du dann schon wieder den korrekten Header includen, damit du mit dem Pointer arbeiten kannst.

Das ganze Gemurkse, damit C/C++ veraltetes Kompilierungssystem damit klarkommt.
 
  • Gefällt mir
Reaktionen: FJK
ok versuche ich gleich mal, danke...
wie "sauber" ist das ganze den eigentlich?
 
Bezüglich der Sauberkeit, das ist so völlig in Ordnung. Es geht ja bei Kreis-Referenzierung kaum anders.

Wird Zeit, dass C++ ein neues Kompilierungsmodell bekommt.
 

Neue Beiträge

Zurück