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 FehlermeldungC:\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 statusDies 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)