static



  • Ich habe eine komplett statische Klasse erstellt (statische Member-Variablen und Methoden). Zugegeben, ich könnte prinzipiell auch globale Variablen nehmen, aber ich will ein bisschen mehr "Ordnung" schaffen.

    Und so sieht das im prinzipiell aus:

    class Statisch
    {
      private:
        static int stat;
      public:
        static void f() { stat = 0; }
    };
    
    void main()
    {
      Statisch::f();
    }
    

    ... und das produziert bei meinem Visual C++ 6.0 leider den Fehler:

    Error LNK2001: unresolved external symbol "private: static int Statisch::stat" (?stat@Statisch@@0HA)

    fatal error LNK1120: 1 unresolved externals

    Weiß jemand, wo der Fehler liegt??

    Danke!!!

    [ Dieser Beitrag wurde am 28.09.2002 um 21:00 Uhr von Andi editiert. ]



  • Die Variable muß außerhalb der Klasse initialisiert werden. Füge folgende Zeile in dein Programm ein:

    int Statisch::stat = 0;
    

    Anm: Dieser Tip basiert auf Vermutungen :p



  • nein, nein, du hast schon Recht, statische Variablen müssen 1x außerhalb von jeder Klasse initialisiert werden, um den Speicherplatz anzulegen.



  • allerdings reicht auch
    int statisch::stat;



  • Super, danke!! Wusste ich gar nicht, dass man statische Variablen auch noch initialisieren muss -- auch kein Service 😉


Anmelden zum Antworten