Groesse static-Array durch static-const-int-Variable in Klasse festlegen
-
Hallo,
eine statische const-int-Klassen-Variable soll die Grösse
eines statischen int-Arrays festlegen, welches
ebenfalls zur selben Klasse gehört.
Wie deklariert man das ? Weil so geht es nicht wegen
Fehlermeldung "array bound is not an integer constant":class MyClass { static const int len; static int buf[len]; }; const int MyClass::len=10; int MyClass::buf[len];
Man kann sich zwar über globale Variablen oder "define" behelfen,
ich würde aber gerne wissen, wie das richtig geht.
-
Die initialisierung muss in die cpp, aber ich galube du brauchst schon einen Define. Ansonsten musst du es wohl oder übel initialisieren ohne die Länge anzugeben.
-
static const-Member können schon in der Klassendefinition initialisiert werden:
struct Test { static const int len = 10; };
und das ist für deine Array-deklaration auch notwendig, da die eine Compiletime-Konstante braucht.
-
Nö, im Header den Wert angeben:
class MyClass { static const int len = 10; static int buf[len]; };
Oder wenn der Kompiler kacke ist, dann mit einem enum
class MyClass { enum { len = 10}; static int buf[len]; };
-
HighLigerBiMBam schrieb:
Die initialisierung muss in die cpp, aber ich galube du brauchst schon einen Define. Ansonsten musst du es wohl oder übel initialisieren ohne die Länge anzugeben.
Nein, falsch. Da hilft auch mehrmaliges Editieren nichts.
-
btw. das funktioniert nur ist es irgendwie von hinten durch die Brust ins Auge...
//h class MyClass { public: static const int len; static int buf[]; }; //cpp int MyClass::buf[] = {1,1,1,1,1}; const int MyClass::len=sizeof(MyClass::buf)/sizeof(int);
Blos Reihenfolge nicht vertauschen...
lektor schrieb:
HighLigerBiMBam schrieb:
Die initialisierung muss in die cpp, aber ich galube du brauchst schon einen Define. Ansonsten musst du es wohl oder übel initialisieren ohne die Länge anzugeben.
Nein, falsch. Da hilft auch mehrmaliges Editieren nichts.
troll dich.
-
HighLigerBiMBam schrieb:
troll dich.
Bis auf das Detail, dass bei deiner jetztigen Version ein int genau ein byte gross sein muss funktioniert es.
-
-
20:55:42 11.11.2010: Meine Bemerkung
20:57:42 11.11.2010: Dein 2. Edit
Sag bloss, du hast das übersehen.
Ich zitier mich mal selber: "Da hilft auch mehrmaliges Editieren nichts."
-
Um ehrlich zu sein habe ich nicht drauf geachtet.
-
# danke