Ü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 query definiert? Und du kannst nicht einfach so einen char in einen std::string umwandeln, 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?


Anmelden zum Antworten