Globalen enum für Header-Dateien zugänglich machen - wie ???
-
Hi, ich will mal mit einem Freund zusammen einen etwas größeren Vokabeltrainer für die Konsole (soll schließlich auch auf dem PDA laufen ;)) programmieren.
Da wir zu Zweit arbeiten, haben wir beschlossen das Projekt vorbildlich in Headerfiles zu unterteilen. (Für gewöhnlich semmel ich alles inline in die main.cpp...)
Jetzt wollen wir einen enum für die Error-Codes nutzen, ich finde aber NIRGENS irgendas darüber.
Klassen-Abhängigkeiten - kein Problem einfach die Schnitstelle mit Includen,
Globale Variable nutzen - Fehlanzeige!Wenn ich am Anfang der Headerfile einfach den Enum definiere ist das doch falsch, oder?
Dann hätte ich das Teil ja doppelt definiert, da die Headerfile ja noch in der main.cpp zusammen mit einigen anderen Header-Dateien includiert wird.Ein Link zu einer ausführlichen Erklärung wäre echt Super!
Und: Danke im V*o*r*r*a*u*s.MfG RoaN;
PS.: Kann erst Morgen Nachm. antworten, nicht wundern.
-
also in die header braucht ihr dann keine variablen zu deklarieren. wär auch sowieso der total falsche weg. ihr deklariert einfach einen type.
typedef enum { ... } Blaaa;
den pakt ihr halt in eine header und #include diese header und dann könnt ihr das enum verwenden.
wenn ihr eine globale variable braucht, die im ganzem programm uniq sein soll, dann ist Singleton-Pattern das stichwort.
-
DEvent! Du hast meinen vollen Respekt!
Bist glaub ich der einzige der die Formulierung des Problems verstanden hat. Ich kann mit dem orig. Posting nämlich absolut nichts anfangen.
-
roan312 schrieb:
Dann hätte ich das Teil ja doppelt definiert, da die Headerfile ja noch in der main.cpp zusammen mit einigen anderen Header-Dateien includiert wird.
#ifndef _MEIN_HEADER_ //folgendes nur machen wenn _MEIN_HEADER_ noch nicht definiert (includiert) ist #define _MEIN_HEADER_ // Kram, der in _MEIN_HEADER_ gehört #endif //_MEIN_HEADER_
-
DEvent schrieb:
also in die header braucht ihr dann keine variablen zu deklarieren. wär auch sowieso der total falsche weg. ihr deklariert einfach einen type.
typedef enum { ... } Blaaa;
den pakt ihr halt in eine header und #include diese header und dann könnt ihr das enum verwenden.
wenn ihr eine globale variable braucht, die im ganzem programm uniq sein soll, dann ist Singleton-Pattern das stichwort.
Ich dachte das geht so?
enum Blaaa { ... };
Soll ich dass dann in jede Headerdatei reinschreiben?
-
roan312 schrieb:
Ich dachte das geht so?
enum Blaaa { ... };
Ja, das ist der C++ Weg
roan312 schrieb:
Soll ich dass dann in jede Headerdatei reinschreiben?
Nein. enum Blaaa ist der "Kram" der in booleros Header gehört; diesen dann einfach bei Bedarf inkludieren.
-
Und wenn ich eine Struct als Rückgabewert nutze?
In diese schöne "Allgemein-Header" einen Prototyp davon reinsetzen?#ifndef _MEIN_HEADER_ //folgendes nur machen wenn _MEIN_HEADER_ noch nicht definiert (includiert) ist #define _MEIN_HEADER_ // Kram, der in _MEIN_HEADER_ gehört enum Rueckgabewert {OK,ERROR}; struct RueckDaten; #endif //_MEIN_HEADER_
???
-
//bla.h #ifndef _bla_h_ #define _bla_h_ namespace bla{ typedef enum{ } blabla; class bla{ int a; char b; public: bla(int at, char bt); }; }; #endif //_MEIN_HEADER_ //bla.cpp #include "bla.h"; namespace bla{ bla::bla(int at, char bt){ a=at; b=bt; } }; //main.cpp #include "bla.h" int main(void){ bla::bla foo(8,'J'); }
compile
g++ -c -o bla.o bla.cpp g++ -o main bla.o main.cpp
So was in der Art?
-
Ja, dass will ich machen.
Nur halt mit einem enum als Rückgabewert einer Methode,
und einer Struct " " " anderen ".Mit: typedef enum{...} blabla;
kann ich irgendwie nichts anfangen, wo ist der unterschied zu: enum blabla {...};
?
-
Mit typedef kann ich
blabla mein;
und hab ein enum, und das andere ist halt die definition der variable,
und kann, zumindest sollte nicht gebraucht werden.
rueckgabe wert ist dann:blabla myclass::funtion(int bla);
Ghost
-
Das sagt mir jetzt so rein gar nichts, ich werde das mit typdef ... mal nachlesen.