Übergabeparameter Operatorüberladung
-
Folgende Aufgabenstellung:
Durch Operatorüberladung soll ein Konstrukt der Form a/=b möglich werden, wodurch dem Atrribut Ival des Klassenobjekts a das Ergebnis der Integer-Division der Attribute Ival der Klassenobjekte a und b zugewiesen werden soll (also a.Ival=a.Ival/b.Ival)
Folgender Code:
#include <iostream>
using namespace std;class Exam {
private:
int a,b;
public:
void operator /= (???);
int ival;
};void Exam::operator /=(???)
{
a.ival /= b.ival;
cout << a.ival << endl;}
int main( void ) {
Exam a,b;
b.ival=2;
a.ival/=b;a/=b;
return 0;
}Ich weiß nicht was ich für Übergabeparameter verwenden soll (??)
Vielen Dank für euer Bemühen
-
statt a.ival/=b; wollt ich natürlich schreiben a.ival=2;
-
http://magazin.c-plusplus.net/artikel/�berladung von Operatoren in CPlusPlus (Teil 1)
Grüße und frohe Weihnachten ... Heiko
-
Danke für die Antwort und dir auch ein frohes und gesegnetes Fest.
Ich hab aber immer noch ein Problem:
wenn ich schreib
void Exam::operator/=(Exam &x)
und möchte dort die Rechenoperation ausführen dann brauch ich auch den Wert a.ival oder?a/=b; bedeutet das a.operator/=b; wobei operator/= gleich der Funktionsnahme ist und b quasi der übergebene Parameter oder?
-
Naja ich muss dann jetzt mal los.
Danke für die Hilfe und nochmals allen Frohe Weihnachten!!
-
Ich hab jetzt meinen Fehler selber gefunden.
Geduld zahlt sich eben aus.
Falls jemand interessiert hier der Code:#include <iostream> using namespace std; class Exam { public: void operator /= (Exam &x); int ival; }; void Exam::operator /= (Exam &b) { cout << b.ival << endl; ival = b.ival / ival; }; int main( void ) { Exam a,b; a.ival=5; b.ival=10; a/= b; // Man kann auch a.operator+=(b); schreiben //Wichtig!!: dank dem this-Zeiger wird die Adresse // des aktuellen Objekts übergeben // des heißt der Wert von Ival der dem a zugeordnet wurde // mann kann auch this->ival schreiben muss man aber nicht cout << a.ival << endl; return 0; }/edit pumu: cpp-Tags. Nächstemal bitte selber machen!