Fehlermeldung bei Methodenaufruf mit char* als Parameter
-
Hi,
ich habe folgende Klasse:
class Spieler { protected: char* name; TColor color; public: void setName(char* name); char* getName(); void setColor(TColor); TColor getColor(); };
this->spieler1 = new Spieler; this->spieler1->setName("test");
Aber sobald ich die Methode setName() aufrufe, erscheint die Meldung
[Linker Fehler] Unresolved external 'Spieler::setName(char *)' referenced from c:\mein_programm.OBJ
Was mache ich falsch?
Wenn ich die Methode nicht aufrufe, geht es...Theo
-
Hallo,
Du hast wohl die Funktion setName nur deklariert aber nicht definiert. Der Linker versucht die Funktion ja nur dann zu linken wenn sie auch verwendet wird.
Nimm hier auch besser const char* als Parameter. Immerhin sollte die Funktion der Parameter nicht ändern.
-
Hallo,
so muss es in der Cpp heißen:Spieler spieler1; spieler1.setName("test");
Gruß
-
Was soll das denn jetzt? Du rufst die Funktion nur auf eine andere Art auf. Sein Problem löst du damit nicht.
-
Entweder musst du die .cpp Datei zum Projekt hinzufügen oder du hast den Methodenrumpf nicht implementiert. Wie sieht denn deine zugehörige .cpp Datei aus.
PS:
Warum verwendest du char pointer für den Spielernamen? Wenn du schon TColor und damit die VCL benutzt kannst du besser AnsiString nehmen!?
-
Hi,
ich hatte tatsächlich keinen Methodenrumpf... Jetzt geht es!
Und auf AnsiString hab ich jetzt auch umgestellt.Danke!