Guten Tag, nachdem ich mich mit folgendem Problem jetzt schon eine Weile herumschlage wollte ich endlich mal Klarheit schaffen. Offensichtlich habe ich noch Lücken in meinem "Class"-Verständnis die ich überwinden sollte.
Hier das Problem:
//================ Main (main.cpp) ============================ #include <stdio.h>
class MyClass { public: uint8_t var; static uint8_t test; };
int main()
{
uint8_t lala = 0;
MyClass MyObject;
MyObject.var = 10;
MyClass::test = 2; // ==> leads to error
return 0;
}
//============================================================
Wenn ich die Zeile "MyClass::test = 2; " auskommentiere läuft alles wie gewünscht, im obigen Zustand krieg ich aber folgende Fehlermeldung: "Main.cpp:(.text.main+0x4): undefined reference to `MyClass::test'" Irgendwas läuft also wegen der "static"-Definition von "uint8_t test" schief. Als Compiler nutze ich avr-g++ in MPLAB (unter Ubuntu).
Hätte mir jemand ein Tip was ich da falsch mache bzw. wie ich statische Klassenvariable richtig definieren muß damit es klappt ?
Vielen Dank, Hermann
Ps: Aus Gründen die mir nicht klar sind wirbelt die Formatierung der Webseite mein Programm unansehnlich durcheinander, bitte dafür um Entschuldigung.