static int in einer Klasse:"undefined reference to..."



  • Nabend,

    ich bin momentan einfach so am ausprobieren nur leider komme ich nicht mehr weiter.
    Ich möchte gerne eine statische integer Membervariable hochzählen lassen. Dies endet aber immer mit einer Fehlermeldung

    C:\Dokumente und Einstellungen\Christian\Desktop>g++ si.cpp -o si
    C:\DOKUME1\CHRIST1\LOKALE~1\Temp/ccIPcaaa.o(.text+0x12c):si.cpp: undefined ref
    erence to `bla::count'
    collect2: ld returned 1 exit status

    Dies ist der Programmquellcode:

    #include <iostream>
    using namespace std;
    
    class bla
    {
        public:
            static int count;
    };
    
    int main()
    {
        bla::count = 0;
    }
    

    Wo liegt mein Fehler 😕

    Danke,
    Squall



  • Du musst die Variable schon noch definieren.

    #include <iostream>
    using namespace std;
    
    class bla
    {
        public:
            static int count;
    };
    int bla::count = 0;
    
    int main()
    {
        bla::count = 0;
    }
    


  • Ach so...
    Hmm, ich wollte eigentlich die Definition von Variablen eigentlich aus dem Globalen Gültigkeitsbereich rauslassen und soweit wie es geht in die main-Funktion verlagern, aber das scheint in diesem Fall nicht zu funktionieren, oder?
    Wie auch immer, vielen Dank für die rasche Antwort!

    Gruß
    Squall



  • integer kannst du direkt in der klasse definieren aber alles andere musst du so definieren wie drakon es gepostet hat

    hau einfach die static variablen definitionen in die entsprechende cpp file von der dazugehörigen h file (nicht die h file)

    allerdings ist das einfach nur die c++ syntax, das ganze landet keinesfalls im globalen namespace sondern ist im scope der klasse

    Klasse::staticVariable oder klassenInstanz.staticVariable geht dann beides (natürlich gilt public/private auch für die static variablen)


Anmelden zum Antworten