error LNK2005 - statische Klassenvariable wollen nicht...
-
Hallo!
Ich habe ein Problem!
Und zwar will mein Visual C++ 2008 Express partout keine statische Variable instanziieren!
Class Test { // Code ... static int max; }; int Test::max = 1;
Die Fehlermeldung lautet immer:
error LNK2005: "private static int Test::max" [...] ist bereits in Graph.obj definiert.
Was mache ich falsch?
-
Die Definition der statischen Variablen (letzte Zeile) solltest du nicht im Header unterbringen, sondern in der .CPP-Datei.
-
CStoll schrieb:
Die Definition der statischen Variablen (letzte Zeile) solltest du nicht im Header unterbringen, sondern in der .CPP-Datei.
Oh man. Das wars. Danke schön!
Entweder steht das in zig Tutorials und weiteren Homepages nicht drin oder ich habe das dauernd übersehen
-
ichbineinnoob schrieb:
Tutorials und weiteren Homepages
Hast du ein C++-Buch?
-
Vermutlich hielten die Autoren solche Sachen für selbstverständlich - die ODR sollte man eigentlich ganz am Anfang beim Umgang mit C++ verinnerlicht haben.
-
Was ist ODR? Und wie kann ein C++-Buch Dinge für selbstverständlich halten, wenn es dazu da ist C++ zu lehren?
-
Eisflamme schrieb:
Was ist ODR?
Getrennte Übersetzung.
-
Und wofür steht ODR?
-
Eisflamme schrieb:
Und wofür steht ODR?
One Definition Rule.
-
Alles klar. In meinem C++-Buch stand das so aber nicht drin, auch wenn ich das Konzept im Nachhinein verstanden habe (aber durchs Forum).
-
Eisflamme schrieb:
Was ist ODR?
"One Definition Rule" - in Kurzfassung: Du darfst für ein Objekt nur eine Definition im gesamten Programm haben.