Operator+ überladen mit zwei Parametern



  • Hallo ihr lieben, ich bin gerade dabei meinen + Operator zu überladen und möchte, dass eine double Zahl mit einer Klasse addiert wird. Andersherum ist es kein Problem, so sieht mein Code in der cpp der Klasse aus

    PotReihVar PotReihVar::operator+( double b)
    {
    	PotReihVar d;
    	int s = xI.size();
    	double res = b + xI[s-1];
    	d.xI = xI; 
    	d.set_one_xI(res,s-1);
    	return d;
    }
    

    zwei Klassen zu addieren ist auch kein Problem, nur wenn ich den operator+ mit zwei Übergabeparametern füttern will klappt es nicht und ich bekomme die Fehlermeldung zu viele Parameter für den Operator. Es soll aber unbedingt so funktionieren ohne vor der Rechnung abzufragen um welche Typen es sich handelt und dann ggf zu switchen. Habt ihr einen Ratschlag für mich?



  • WING schrieb:

    nur wenn ich den operator+ mit zwei Übergabeparametern füttern will klappt es nicht

    In deinem Beispielcode hat der Operator nur einen Parameter...



  • Im Magazin ist das erklärt
    https://www.c-plusplus.net/forum/232010 Kapitel 3.2



  • Definiere den Operator+ außerhalb der Klasse:

    PotReihVar operator+(double b, const PotReihVar& rhs) { ... }
    

    ggf. kannst du diese Funktion "befreunden" - am einfachsten wird aber die Implementierung wie folgt sein (unter der Annahme, dass es Copy-Constructor und operator+= schon gibt):

    PotReihVar operator+(double b, const PotReihVar& rhs) { 
        PotReihVar result(rhs);
        result += b;
        return result;
    }
    


  • vielen Dank! Das hat mir schon echt weitergeholfen, klappt jetzt!


Log in to reply