was ist bitte an folgendem code falsch?
-
hi weiss jemand wieso mein compiler bei folgendem code meckert?
class A { // ... static ushort GetZaehlerAnzahl(){return zA;} private: static ushort zA; }; ushort anzahl_zaehler = A::GetZaehlerAnzahl(); short zaehler_staende[anzahl_zaehler];
er akzeptiert die array-groesse anzahl_zaehler nicht und sagt:
d:\arbeit\g175\game.cpp(4237) : error C2057: Konstanter Ausdruck erwartet
d:\arbeit\g175\game.cpp(4237) : error C2466: Reservierung eines Arrays der konstanten Größe 0 nicht möglich
d:\arbeit\g175\game.cpp(4237) : error C2133: 'zaehler_staende': Unbekannte GrößeVielen Dank.
-
du kannst kein eingebautes array mit variabler größe anlegen.
das "static" hilft dir da auch nicht weiter, erst recht nicht, nachdem du es in eine nicht-static-variable kopiert hast.
-
ok danke.
-
btw. ich meinte auf dem stack kannst du es nicht anlegen. dynamisch funktioniert es aber
short*x=new short[var];
da solltest du aber besser eine Container-Klasse verwenden, meinetwegen std::vector<short>
-
@peperony
Du könntest das ganze auch über const Werte machen, sofern es keine Laufzeitdynamik erfordert, zBclass A { // ... public: static const ushort ZaehlerAnzahl = 100; }; short zaehler_staende[A::ZaehlerAnzahl];