static struct in einer Klasse erstellen
-
Hallo,
ich habe eine Klasse (alle Methoden und Variablen sind als static definiert) in der auch eine "statische Instanz" eines structs enthalten sein soll.
Aktuell sieht das ganze in der .h Datei in etwa so aus:
typedef struct { unsigned A : 4; unsigned B : 4; } myStruct; static myStruct instanceOfMyStruct;Nun möchte ich dieses struct natürlich in den statischen Methoden meiner Klasse verwenden.
Nun bekomme ich den LNK2001 Fehler. Schließlich wurde die Variable des structs auch nicht in der .cpp Datei initialisiert, wie man es mit Variablen sonst tun muss.
Mache ich dies allerdings, dann hilft mir das auch nicht weiter, da ich dann folgende Fehlermeldung bekomme:
error C2143: syntax error : missing ';' before 'myClass::instanceOfMyStruct'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2371: 'instanceOfMyStruct' : redefinition; different basic typesInitialisiert habe ich es so:
myStruct myClass::instanceOfMyStruct;Wie kann ich das Problem lösen?
Danke schonmal!
Gruß
Shinzo
-
typedef struct { unsigned A : 4; unsigned B : 4 /* --> */ ; /* <-- */ } myStruct;
-
Ok, das war ein Schreibfehler im Beitrag, in meinem richtigen struct ist das Semicolon drin. Aber danke!

Wenn es am Semicolon gelegen hätte, hätte ich denke ich nicht erst beim Linker einen Fehler bekommen.

-
RyoShinzo schrieb:
Hallo,
ich habe eine Klasse (alle Methoden und Variablen sind als static definiert) in der auch eine "statische Instanz" eines structs enthalten sein soll.
Das ist hoffentlich nur zum Testen, ansonsten wäre ein "namespace" wohl eher angebracht. C++ ist nicht Java.
RyoShinzo schrieb:
typedef struct { unsigned A : 4; unsigned B : 4; } myStruct;Was soll das typedef? C++ ist auch nicht C.
Vielleicht geht's so:
myClass::myStruct myClass::instanceOfMyStruct;
-
Hat geklappt, danke!
