Operatoren überladen
Geizhals » Forum » Programmierung » Operatoren überladen (8 Beiträge, 13 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
Operatoren überladen
02.11.2002, 19:01:00
Also dieses Konzept von C++ hat mich schon fasziniert, weil ich bisher noch nie vom Überladen von Operatoren gehört habe, aber auf jeden Fall ist es einfach genial!
Es ist ziemlich einfach zu verstehen, aber ich hab da jetzt ein triviales Problem wo man wahrscheinlich nur Programmiererfahrung benötigt um es zu lösen. Da bieten sich doch die Geizhals-User hervorragend an :)

Ich hab eine Klasse "bruch" und jede Menge (überladene) Operator-Funktionen, die außerdem als 'friend' der Klasse deklariert sind.

Beispiel:

void main() {

bruch b1(1,1), b2(5,5);

b1 *= b2; //funktioniert, sollte 5/5 rauskommen

b1 *=   b2 -= b1 * b2 * b1; //funktioniert nicht

b2 -= b1 * b2 * b1; //so
b1 *=   b2;              //funktionierts

}
//sind für '+' '-' '/' ähnlich
bruch operator* (const bruch& b1, const bruch& b2) {
  return bruch ( b1.zaehler * b2.zaehler , b1.nenner * b2.nenner);
}
//arithmetische Operatoren mit Zuweisung
void operator-= (bruch& b1, const bruch& b2) {
  b1 = b1-b2;
}
void operator*= (bruch& b1, const bruch& b2) {
  b1 = b1*b2;
}
ENDE

Der Compiler sagt:
error C2679: binary '*=' : no operator defined which takes a right-hand operand of type 'void' (or there is no acceptable conversion)

Ich nehme an, dass man die arithmetischen Operatoren mit Zuweisung anders implementieren muss, aber ich hab wieder mal keinen Schimmer wie.
---------------
So während ich das obige geschrieben habe, ist mir wieder ein !:-) gekommen |-D

bruch operator-= (bruch& b1, const bruch& b2) {
  return (b1 = b1-b2);
}
bruch operator*= (bruch& b1, const bruch& b2) {
  return (b1 = b1*b2);
}

So funktionierts, aber mich würd trotzdem weiterhin interessieren wie ihr es machen würdet.

Antworten PM Alle Chronologisch
 
Melden nicht möglich
.  Re: Operatoren überladen  (Xmolch am 02.11.2002, 19:18:03)
.  Re: Operatoren überladen  (Superflo am 02.11.2002, 19:18:31)
..  Re(2): Operatoren überladen  (Godlike am 02.11.2002, 20:52:56)
.  Re: Operatoren überladen  (Corban am 03.11.2002, 11:24:02)
..  Re(2): Operatoren überladen  (Xmolch am 03.11.2002, 14:33:36)
...  Re(3): Operatoren überladen  (Corban am 03.11.2002, 15:23:35)
...  Re(3): Operatoren überladen  (PyroTFD am 03.11.2002, 23:05:48)
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung