Header-Files.. gegenseiter bezug .. Problem!!
-
Folgende Konstellation:
//A.h class A{ public: struct DATA_A{...}; }; //B.h class B{ public: struct DATA_B{...} };brauch ich nur DATA_A in B und DATA_B ind A, muss ich ja A und B jeweisl in B und A includen.. aber dann gibt probleme ...
-
Was heißt denn "brauchen" genau? Möglicherweise reicht ja eine Forward Declaration.
-
ich verwende halt DATA_B in der klasse A und DATA_A in der Klasse b, wenn ich aber nun wie gestagt gegenseitg includieren gibts fehler...
bei ner forward deklatioan kommen die selben fehler:error C2027: Verwendung des undefinierten Typs "A"
P.S.: B ist schon in A included.. das gibt keine probleme... aber indludiere ich nun A noch in B bzw. will ich daten von A in B verwenden kommen dies fehler
-
Wie hast du denn die Forward Declaration gemacht? Was MFK meint ist wohl sowas:
//A.h class B; //Das ist eine Forward Declaration für Klasse B class A{ public: struct DATA_A{...}; };//B.h class A; //Das ist eine Forward Declaration für Klasse A class B{ public: struct DATA_B{...}; };Falls die Implementierung von A und B in seperaten .cpp Dateien stattfindet, solte es so auch funktionieren.
-
Was willst du denn mit dem Design erreichen? Eventuell solltest du ja darüber nachdenken, die komplette Klassenaufteilung neu anzufangen.
Aber mal was konstruktives: Um eine Klasse verwenden zu können, mußt du sie vorher deklariert haben (in einigen Fällen benötigt der Compiler auch die Definition). Die globale Klasse A könntest du noch mit einer Forward-Deklaration (
class A;) für B bekannt machen, aber mit der inneren Klasse A::DATA_A wird das etwas schwieriger.
(und wenn du versuchst, die beiden Header wechselweise zu includen, wird dir der Präprozessor einen Strich durch die Rechnung machen)
-
jepp ... das ist problem überlege mir grad ne elegantere möglichkeit.... @ CStoll
P.S.: wenn ich jeweis ne forward deklaration mache gibts die selben probem
-
dann zeig doch mal bisschen code her!
-
hmm... wäre glaub jetzt hier zu komplex.... is viel code...