Überlagerte Funktion
-
Hi.
Ich habe eine Funktion
bool func2(const string &text)und möchte diese gern überlagern, um andere Datentypen damit arbeiten zu lassen
bool func3(const char &text) { string _query = query; return func2(_query); }Jetzt meint er aber 'const char' kann nicht nach 'string' konvertiert werden.
Wieso kann ich einem string kein char zuweisen
-
Wein es keinen entsprechenden Zuweisungsoperator oder impliziten Konstruktor für basic_string gibt?!
-
mampel schrieb:
bool func3(const char &text) { string _query = query; return func2(_query); }Wo ist denn bitte
querydefiniert? Und du kannst nicht einfach so einencharin einenstd::stringumwandeln, benutz dafür den Konstruktor:string _query(text);Im Weiteren heisst es überladen und nicht überlagern. Du überlädst allerdings keine Funktion, sondern machst eine neue, mit der du eine bestehende aufrufst.
-
Nexus schrieb:
Im Weiteren heisst es überladen und nicht überlagern.
Es gibt durchaus Fachliteratur, die das Wort „Überlagern“ verwendet.
Zum Thema: Das ist trotzdem keine Überladung, weil die Funktionen unterschiedliche Namen haben. Das Zeichen als 'const'-Referenz zu übergeben ist auch überflüssig, eine Wertübergabe ist hier vollkommen angebracht.
-
Argh, etwas zu schnell hingekritzelt. Sorry.
bool func(const char &text) { string _text = text; // FEHLER return func(_text); } bool func(string &text) { // mach was return returnwert; }So, jetzt stehts so dar wie es ausschauen sollte.

-
Du weißt aber schon, dass const char &c nur ein einzelnes Zeichen darstellt, oder?