LINK Geschrieben 26. August 2003 Geschrieben 26. August 2003 also, ich hab da ein kleines problem, das mich mittlerweile ganz schön nervt... um eines vorweg zu sagen - ich programmiere erst seit einer woche in c++ , hab da also nicht so viel ahnung von ich habe eine klasse CStein und eine klasse CIgel (namen willkürlich). CStein greift auf die static-attribute von CIgel zu, so weit so gut. deshalb muss ich ja auch die Igel.h in CStein includen - alles kein problem soweit, funktioniert alles prima aber: ich möchte der CIgel eine membervariable vom typ CStein hinzufügen - und hier ist das problem... CStein will ja die Igel.h includen und es entsteht ein konflikt, weil es CStein ja noch net gibt... kann man das irgendwie umgehen? Zitieren
robotto7831a Geschrieben 26. August 2003 Geschrieben 26. August 2003 Hallo, hilft das vielleicht: #ifndef #include "Igel.h" #endif [/code] Frank Zitieren
LINK Geschrieben 26. August 2003 Autor Geschrieben 26. August 2003 ich weiss nicht, kann ich morgen erst wieder ausprobieren... was bewirkt das denn? zur not schau ich 's halt nach Zitieren
Goos Geschrieben 26. August 2003 Geschrieben 26. August 2003 Wenn du so ne gegenseitige Abhaengigkeit hast, dann versuchs mal mit Vorwaertsdeklaration. Goos Zitieren
LINK Geschrieben 27. August 2003 Autor Geschrieben 27. August 2003 vorwärtsdeklaration?!? du kannst mir nicht zufällig sagen, was das ist? Zitieren
robotto7831a Geschrieben 27. August 2003 Geschrieben 27. August 2003 Original geschrieben von LINK was bewirkt das denn? zur not schau ich 's halt nach Das verhindert, dass eine Include Datei mehrfach eingebunden wird und dadurch Fehler kommen können. Frank Zitieren
Goos Geschrieben 27. August 2003 Geschrieben 27. August 2003 Hmmm ich und erklaeren Das is in deinem Fall quasi die Bekanntmachung einer Klasse vor ihrem include. Zum Beispiel im Header deiner CIgel ein "class CStein". Somit hast du dein CStein dann fuer CIgel schon bekanntgemacht, obwohl es da noch nicht includet ist. ....hmmm mist...ich kann so frueh am Morgen noch nix erklaeren....werd erstmal nen Kaffee trinken. Vielleicht halfs ja trotzdem. Goos Zitieren
Goos Geschrieben 27. August 2003 Geschrieben 27. August 2003 Original geschrieben von palvoelgyi Das verhindert, dass eine Include Datei mehrfach eingebunden wird und dadurch Fehler kommen können. Frank Noe das is nich richtig so....verhindern eines mehrfachen Einbindens wird normalerweise in jedem Header durch ein entsprechendes #ifndef, #define ,#endif erreicht. Man brauchts in der Regel nur bei einer gegenseitigen Abhaengigkeit wuerd ich sagen. (aber nehmt mich nicht so ernst ich hatte noch keinen Kaffee) Goos Zitieren
robotto7831a Geschrieben 27. August 2003 Geschrieben 27. August 2003 Ich habe doch nichts anderes gesagt. Frank Zitieren
Goos Geschrieben 27. August 2003 Geschrieben 27. August 2003 Aehmmm...noe hast nicht gesagt Man verhindert die Mehrfachincludes doch nur mit Praeprozessor Anweisungen. Wo soll da bitte der Zusammenhang zur Vorwaertsdeklaration sein? ...vielleicht versteh ich dich aber auch nicht richtig und steh n bissl aufm Schlauch. Goos Zitieren
Guybrush Threepwood Geschrieben 27. August 2003 Geschrieben 27. August 2003 Nee goos Kuck mal den 2. Post in disem Thread, da hat palvoelgyi das geschrieben:) Zitieren
Goos Geschrieben 27. August 2003 Geschrieben 27. August 2003 Jo Herr Pirat...nun hab ich den Unterschied zwischen den Nachfragen was bewirkt das denn? zur not schau ich 's halt nach und vorwärtsdeklaration?!? du kannst mir nicht zufällig sagen, was das ist? auch begriffen. Sorry palvoelgyi...is nich mein Tag heute Goos Zitieren
nic_power Geschrieben 27. August 2003 Geschrieben 27. August 2003 Hallo, nun aber wieder zurück zum eigentlichen Thema. Generell halte ich es für keine gute Idee, zwei Klasse A und B zu implementieren, wobei A als Membervariable von B auftritt und B als Membervariable von A. Sowas führt zu Problemen; wenn es sich denn gar nicht vermeiden läßt, kannst Du mit Forward-Deklarationen arbeiten, allerdings gibt es einige Einschränkungen (Du kannst beispielsweise keine Variable innerhalb der Klasse deklarieren): #ifndef __CIGEL_INCLUDE__ #define __CIGEL_INCLUDE__ class CStein; class CIgel { static CStein tmp; }; #endif NIc Zitieren
LINK Geschrieben 27. August 2003 Autor Geschrieben 27. August 2003 ok, danke für die hilfe, aber ich hab mir das leben einfach gemacht, und einfach eine neue klasse geschaffen, die alle eingaben aufnimmt und sie speichert c++ lernt man halt nicht in einer woche, mir raucht ja jetzt schon der kopf danke nochmal! Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.