Header-Abhängigkeiten

Post Reply
Message
Author
bakunin
Posts: 597
Joined: 16. Aug 1999 6:44
Location: Lorsch (Südhessen)
Contact:

Header-Abhängigkeiten

#1 Post by bakunin »

Hallo!

Ich muss mal wieder eine relativ blöde Frage stellen.

Gegeben ist folgende Situation: Ich habe zwei Headerdateien, nennen wir sie foo.h und bar.h. In jeder wird ein Namensraum beschrieben (Foo und Bar). In beiden Namensräumen befinden sich unter anderem auch typedefs, z.B. Foo::baz und Bar::qux. Nun benötigen Funktionen aus dem Namensraum Foo aber als Argument einen Wert vom Typ Bar::qux und umgekehrt erhalten Funktionen aus Bar Paramater des typs Foo::baz.

Ich finde diese Situation nicht sonderlich ungewöhnlich.

Nun habe ich allerdings das Problem, dass der Header foo.h den Header bar.h #includen muss und umgekehrt. Das führt dazu, dass der Compiler beim Einlesen von einem der beiden Header natürlich die Deklarationen aus dem anderen noch nicht kennt.

Der Code lässt sich also nicht compilieren. Nun ist meine Frage, ob man so eine Situation eben vermeiden sollte oder ob es einen sinnvollen Ausweg gibt. Alles nötige bereits vor dem #includen des jeweils anderen Headers zu deklarieren empfinde ich als unschöne Lösung (Header-Dateien heißen nicht ohne Grund so), oder sollte/muss man es tatsächlich so lösen?

Grüße von Wolf "Um Rekursion zu verstehen, muss man zuerst Rekursion verstehen" gang

User avatar
hjb
Pro-Linux
Posts: 3264
Joined: 15. Aug 1999 16:59
Location: Bruchsal
Contact:

Re: Header-Abhängigkeiten

#2 Post by hjb »

Hi,

wenn Header sich gegenseitig includen müssen, dann sollte man wohl das Design überdenken...

Wenn es nur darum geht, einen Typ als Klasse bekannt zu machen, kann man auch deklarieren:

class Foo::baz;

und sich das #include schenken.

Gruß,
hjb
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?

Post Reply