Operatoren richtig überladen



  • Hallo,

    ich muss als Übung eine eigene Version der String-Klasse implementieren. Dazu soll u.a. der + Operator überladen werden. Ich habe mir hier das Tutorial zum Überladen von Operatoren durchgelesen. Dort steht als Beispiel für den + Operator:

    const X operator+(X const& lhs, X const& rhs);
    

    Wenn ich das für mich abändere, sieht das ja so aus:

    const String operator+(String const& lhs, String const& rhs);
    

    Aber mein Compiler (MSBuild, VS 2015 Preview) wirft die folgende Fehlermeldung:

    error C2804: Binärer Operator "+" hat zu viele Parameter

    Bei der Implementierung der Methode

    const String String::operator+(String const &a, String const &b)
    {
        ...
    }
    

    erhalte ich dann die Fehlermeldung:

    class "String" enthält keinen Member "operator+"

    Außerdem erhalte ich bei

    String a = String("Hallo ");
    	String b = String("Welt!");
    	String c = a + b;
    

    in der dritten Zeile diesen Fehler:

    error C2676: Binärer Operator "+": "String" definiert diesen Operator oder eine Konvertierung in einen für den vordefinierten Operator geeigneten Typ nicht

    Kann mir jemand sagen wo der Fehler liegt? Jedes Tut, dass ich gefunden habe, implementiert den Operator so.



  • Entweder den operator global mit zwei parametern definieren oder in der Klasse mit nur einem.



  • 💡 💡 💡 ahhhhh.

    Jetzt klappts. Vielen Dank 👍


Log in to reply