Frage zu Funktionen
-
class Funktion { public: Funk(int zahl, string& Name); };
das public ist wichtig, da du sonst nicht von aussen auf die methode(so nennt man funktionen innerhalb von Klassen) zugreifen kannst
-
Das mit dem public ist schon klar, dass hab ich ja auch. Aber bei dem Parameter string_type& name; funktioniert irgendwie die Überschreibung in die andere Funktion nicht! Also das mit dem std::string str;! was mach ich denn falsch? Da kommt immer als Fehler: Temporary used for Parameter in call...!Kann mir nochmal jemand helfen?
-
was iss mit einem rückgabewert ?
Funktionsaufruf Bla.Funk(1,"abc"); sollte doch funzen
-
Aber der Rückgabewert kommt doch aus der Funktion der anderen Datei!
-
ich hab das mal ausprobiert und da kommt ebenfalls wieder derselbe Fehler!
-
Hab das Problem lösen können. Das war alles irgendwie total blöde definiert und ich mußte die Klasse davor angeben!
Aber danke euch!
-
Hallo,
guck mal in deinen Einstellungen, da steht irgendwo ds Warnungen als Fehler angezeigt werden. Das kann man abstellen.
-
das war aber keine Warnung! Sondern ein Error!
-
neu84 schrieb:
das war aber keine Warnung! Sondern ein Error!
Normalerweise ist das nur eine Warnung, wenn ich mich nicht total irre. Hast du aber die Option eingestellt, dass Warungen in Fehler gewandelt werden, wird das auch ls Fehler angezeigt.
-
Kam aber direkt als Error und hat auch nicht weitergemacht! Also nix mit Warnung, aber ja auch egal. Denn ich habe es gelöst!
-
wenn man eine funtion
foo(std::string& msg)
so aufruft: foo("blah")
dann ist "blah" temporär und darf nicht geändert (const) werden (Warum sollte man ein temporäres Object ändern?!)also entweder schreiben
foo(const std::string& msg);
foo("blah");oder:
foo(std::string msg)
{
// mach was mit msg, was es verändert
}std::sting aString("hallo");
foo(aString);Aus diesen Gründen ist es ganz richtig, dass die Sache ein FEHLER und keine Warnung ist.
mfg, KdeE
-
KdeE schrieb:
foo(std::string& msg)
{
// mach was mit msg, was es verändert
}& vergessem, sorry. Sollte mir mal ein Account zulegen zum editieren.