Probleme mit constanten, header, includier-blalbla
-
Danke! (da hab ich mir ausnahmsweise mal Mühe gegeben)

-
Ales klar. Nur nich Punkt 7.1 der ja wahrscheinlich mein Problem darstellt, könnte ich das nochmal genauer haben, bisher hab ich´s noch nicht verstanden. Und wie ist das mit der Vorwärts Deklaration?
-
Nur um sicherzugehen:
7.1 Membervariablen in Klassen dürfen im Header deklariert sein, da sie beim Ausführen des Programms nicht einfach global auf dem Stack angelegt werden, sondern nur darstellen, wie der Speicher einer Klasse interpretiert werden soll.
Das heißt:class ABC { int x; //die Variablendeklarationen hier dürfen und sollten in den Header string y; public: //... }Das bedeutet, daß der Inhalt einer Klasse ohne Probleme im Header definiert werden kann (und meistens auch muß), ohne damit die One-Definition-Rule zu verletzen.
Zeig doch einfach mal etwas Code, damit wir dir vielleicht eine konkrete Lösung vorschlagen können.
-
BigGreenFoot schrieb:
Ales klar. Nur nich Punkt 7.1 der ja wahrscheinlich mein Problem darstellt, könnte ich das nochmal genauer haben, bisher hab ich´s noch nicht verstanden. Und wie ist das mit der Vorwärts Deklaration?
Ich glaube, dein Problem betrifft eher Punkt 5 und 6...
-
Wie? Man kann alles 1 zu 1 abschreiben? Kein extern davor? Funktioniert das dann auch bei Strukturen?
-
BigGreenFoot schrieb:
Wie? Man kann alles 1 zu 1 abschreiben? Kein extern davor? Funktioniert das dann auch bei Strukturen?
BigGreenFoot.cpp: 1: Fehler: Fehlender Bezugspunkt
-
Es tut mir Leid für meine Engstirnigkeit, ich suche schon seit tagen nach einer Antwort und finde sie nicht. Daher bitte ich um Verständnis. Google ist nur eine Maschine, ein Mensch (kann) einem entgegen kommen. Die Sache mit den Headern hab ich glaub einigermaßen verstanden. Ich bräuchte bitte nur noch ein Beispiel von einem Quelltext, in dem eine Struktur in zwei Headern eingesetzt wird, damit ich mir mal ein Bild machen kann.
-
BigGreenFoot schrieb:
Es tut mir Leid für meine Engstirnigkeit, ich suche schon seit tagen nach einer Antwort und finde sie nicht. Daher bitte ich um Verständnis. Google ist nur eine Maschine, ein Mensch (kann) einem entgegen kommen. Die Sache mit den Headern hab ich glaub einigermaßen verstanden. Ich bräuchte bitte nur noch ein Beispiel von einem Quelltext, in dem eine Struktur in zwei Headern eingesetzt wird, damit ich mir mal ein Bild machen kann.
Mein Kommentar sollte nicht heißen, dass du mir auf den Nerv gehst. Ich wollte damit nur ausdrücken, dass ich deine Frage absolut nicht verstanden habe.
Leider weiß ich nicht so genau, was du brauchst...
A.h
#ifndef A_H #define A_H class A { //... }; #endif //A_HB.h
#ifndef B_H #define B_H #include "A.h" class B : public A { //... }; #endif //B_HC.h
#ifndef C_H #define C_H #include "A.h" class C : public A { //... }; #endif //C_HAlso: Du kannst die Struktur in einen dritten Header auslagern. Oder aber du bindest den einen Header in den anderen ein. Du kannst schauen, ob eine Vorwärtsdeklaration ausreicht. Letztendlich hängt die "optimale" Headerstruktur immer von dem ab, was du machst.
-
Ok das war schlecht formuliert, ich bräuchte einen Beispiel Quelltext, in dem 2 Header ihre eigene Struktur haben, die in der jeweils anderen eingesetzt wird. Was bedeutet das man eins der Strukturen 2x definieren/deklarieren muss.
Am besten zeig ich euch mein naja „Ding“ (Quelltext), mit dem ich das Problem habe (unter anderem) . Ich stell ihn als Download bereit, den zum anzeigen wäre es zu fiel. Bitte schaut euch das „Ding“ für mich durch, und nörgelt so fiel ihr könnt, damit ich weiß wie/was ich besser machen soll. Das „Ding“ sollte ein Brainfuck Interpreter werden. Allerdings ohne STL, mit einem Haufen Rechtschreibfehler, und noch mehr Speicherlecks.Probleme hab ich gerade bei Parser.h, und loop.h, beide haben eine Struktur, die bei der jeweils anderen eingesetzt wird. jump_save soll den letzten Rücksprungpunkt speichern, und sign_posi, die Position des Parserzeigers in einem String.
https://sites.google.com/site/csbackround/downloads/BraynFuck.zip?attredirects=0&d=1
-
Man packt ja auch normalerweise keine Funktionsdefinitionen in die Header (außer inline-Funktionen), sondern in den CPP-Dateien. Und für die Funktionsprototypen reicht eine Forward-Deklaration der benötigten Typen aus.
-
Also guckst du nach Punkt 2 und 5. Und wieso inkludierst du <string>, wenn du ohne STL arbeiten willst?
-
Komplet alle Funktionen in die .cpp auch bei Klassen?
-
Ja...
Wozu gibt's denn meine Anleitung eigentlich?
-
Ja
Wobei man typischerweise mehrere CPP-Dateien für die einzelnen beteiligten Klassen verwendet und dann durch den Linker zu einem Programm zusammenfassen lässt.