static



  • Hallo!

    Ich habe eine static-Funktion in einer Klasse definiert.
    Weiters einige static Atribute, die ich in dieser Funktion benutze!
    Ich habe jetz aber ein Problem.

    Ich zeige euch ein kleines Beispiel das mein Problem veranschlaulicht:

    //Grr.h
    #include <iostream.h>
    class Grr
    {
    public:
        Grr(int i);
    
        void Ausgabe(void);
    
    private:
        static int m_i;
    };
    
    //Grr.cpp
    #include "Grr.h"
    
    Grr::Grr(int i)
    {   m_i=i;
    }
    
    void Grr::Ausgabe(void)
    {   cout<<m_i;
    }
    

    Beim compilieren erhalte ich aber folgende Fehlermeldung:
    Linker-Vorgang läuft...
    Grr.obj : error LNK2001: Nichtaufgeloestes externes Symbol "public: static int Grr::m_i" (?m_i@Grr@@2HA)
    Debug/Trystatic.exe : fatal error LNK1120: 1 unaufgeloeste externe Verweise

    Kann mir jemand helfen?

    Danke



  • Sorry,

    Ich habe es mittlerweile selber herausgefunden:

    #include "Grr.h"
    
    int Grr::m_i;
    
    Grr::Grr(int i)
    {   
    }
    
    void Grr::Ausgabe(void)
    {   cout<<Grr::m_i;
    }
    

    Ich muss im .cpp File die Static variable auch noch deklarieren.



  • du deklarierst sie da nicht nochmal, du musst nur Speicher für sie anlegen 😉



  • Original erstellt von <Hubert>:
    Ich muss im .cpp File die Static variable auch noch deklarieren.

    class T
    {
    static int foo;
    };

    das deklariert eine variable namens foo

    int T::foo;
    dies definiert dann die variable namens foo

    so einfach ist das.


Anmelden zum Antworten