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öße

    Vielen 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, zB

    class A
    {
        // ...
    public:
        static const ushort ZaehlerAnzahl = 100;
    };
    
    short zaehler_staende[A::ZaehlerAnzahl];
    

Anmelden zum Antworten