Zum Inhalt springen

static bzw. include-problem


LINK

Empfohlene Beiträge

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...