Problem mit Klasse
-
ich habe in einem programm eine klasse:
class Physik { public: void set(int real,int bounce,int jump,int alll) { ireal = real; ibounce = bounce; ijump = jump; ialll = alll; } private: static int ireal, ibounce, ijump, ialll; };
wenn ich das allerdings kompiliere erhalte ich folgenden fehler:
[Linker error] undefined reference to
Physik::ireal' [Linker error] undefined reference to
Physik::ibounce'
[Linker error] undefined reference toPhysik::ijump' [Linker error] undefined reference to
Physik::ialll'was mache ich falsch??
-
Du musst static-Variablen nicht nur deklarieren sondern auch irgendwo definieren (also im Prinzip Speicher dafür anlegen). Für static-Variablen wird ja nur einmal pro Typ Speicher angelegt -> der Konstruktor kann dir also die Arbeit nicht abnehmen.
Heißt in deiner cpp-Datei fehlt noch etwas in dieser Art:
int Physik::ireal = 0; int Physik::ibounce = 0; int Physik::ijump = 0; int Physik::iall = 0;
Bei weiterführenden Fragen zu diesem Thema hilft man dir sicherlich gerne im Standard-C++-Forum -> ich verschieb den Thread mal
MfG SideWinder
-
Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Chop_Suey schrieb:
ich habe in einem programm eine klasse
Wen ich was mache, dann acuh mit Klasse. Wie SideWinder schon sagte, hast du die genannten Symbole nicht definiert.
Bye, TGGC (Keine Macht den Dummen)
-
SideWinder schrieb:
Heißt in deiner cpp-Datei fehlt noch etwas in dieser Art:
int Physik::ireal = 0; int Physik::ibounce = 0; int Physik::ijump = 0; int Physik::iall = 0;
vielen dank fuer die hilfe doch trotzdem noch eine kleine frage
dasss muss dann zum beispiel ind die main funktion oder einfach in die funktion die die klasse verwendet? (kenn mich noch nicht sooooo sehr damit aus..)
-
Chop_Suey schrieb:
SideWinder schrieb:
Heißt in deiner cpp-Datei fehlt noch etwas in dieser Art:
int Physik::ireal = 0; int Physik::ibounce = 0; int Physik::ijump = 0; int Physik::iall = 0;
vielen dank fuer die hilfe doch trotzdem noch eine kleine frage
dasss muss dann zum beispiel ind die main funktion oder einfach in die funktion die die klasse verwendet? (kenn mich noch nicht sooooo sehr damit aus..)Es muss in irgendeiner Implementationsdatei stehen. Am besten dort, wo du den
Rest der Klasse implementierst.mfg
v R