returned 1
-
/tmp/ccHuKP9O.o: In Funktion »main«: classsss.cpp:(.text+0x7b): Warnung: undefinierter Verweis auf »Tier::getNameabi:cxx11« collect2: error: ld returned 1 exit status
Sorry ich hatte ursprünglich das veränderte Script hochgeladen, jetzt geändert.
die getName() wird von Hund lessi benutzt.
-
@Lou-Cyphr3 Ja, aber du hast keine solche Funktion. Du hast nur ein getName, aber kein Tier::getName.
-
@wob muss ich die Definition direkt in die Klasse schreiben?
-
nein
-
@wob dann ist die Vererbung falsch?
-
nein.
Wie wär's, wenn du nicht rätst, sondern feststellst, wo der Unterschied zwsichen
getName
undTier::getName
ist.
-
@wob Ich weiß nicht recht. Ich nahm an, dass wenn die Funktion definiert ist, ich sie in der Klasse nutzen kann. Den Bereichsoperatur haben wir mal bei OperatorenPriorität erwähnt aber tatsächlich noch nicht behandelt. Namespaces kommen erst in ein paar Wochen.
Ich habe aber gerade gelesen, ihn zur Methodendeklaration außerhalb der Klasse zu benötigen. Oi!
-
@Lou-Cyphr3 Woher soll der Compiler wissen, dass dein
getName
zu Tier gehört? Es könnte ja auch zu Hund oder zu sonstwas gehören. Wenn keine Klassenname dabei steht, handelt es sich um eine stinknormale freie Funktion - und die gehört zu gar keiner Klasse! Sie wird auch so nicht funktionieren, weil dein Parameter "name" so keine Verbindung zu der Variable "name" des Tiers hat.class Tier { void meine_funktion(); }; Tier::meine_funktion() { // ... }
So. Hilft das?
Den oberen Teil (das
class { .... };
) schreibt man auch oft in eine .h-Datei, wenn man die Klasse anderswo braucht. Die eigentliche Implementierung gehört dann in die cpp-Datei.
-
@wob okay macht Sinn. Danke.
Ich hab das jetzt mal übertragen.
class Tier { public : string name; void getName(); }; Tier::void getName(){ cin >> name; return name; }
Der Compiler meckert.
classsss.cpp:16:8: error: expected unqualified-id before ‘void’ Tier:: void getName(){ ^~~~
-
@Lou-Cyphr3 sorry, hatte in der Eile das void vergessen.
void Tier::name_der_funktion()
Rückgabetyp bzw void an den Anfang!
-
Okay. tausend Dank! @wob