Operatoren erstellen

Hi Leute,
ich hab Probleme mit einer Programmieraufgabe die ich lösen muss. Dort heisst es: „erstellen Sie öffentliche Operatoren op+, op-, op* vom Typ Matrix mit jeweils einem Parameter const Matrix& zur Darstellung einer Matrix, in denen Summe, Differenz… gebildet wird“
Zur Info, wir haben in der letzten Programmieraufgabe eine Klasse Matrix erstellt und mit Hilfe von Elementfunktionen Matrizenoperationen (+,*,…) realisiert.
Probleme hab ich mit den Operatoren. Unter Operatoren verstand ich bisher sowas wie + operator oä. Wie kann ich nun eigene Operatoren erstellen? Und wie werden die dann angewendet?
MatrixA op+ MatrixB;
Kann mich irgendjemand aufklären?

Gruss
M.

Hallo,

am besten fragst du den Aufgabensteller, weil wir das als Außenstehende auch nicht wissen können :wink:

Grüße,
Moritz

Hallo,

Probleme hab ich mit den Operatoren. Unter Operatoren verstand
ich bisher sowas wie + operator oä. Wie kann ich nun eigene
Operatoren erstellen? Und wie werden die dann angewendet?
MatrixA op+ MatrixB;
Kann mich irgendjemand aufklären?

Ich hab mal eine kleine (unvollständige) Matrixklasse geschrieben,
anhand derer Du das Prinzip ableiten können solltest:

class MAT {
private:
 int \*daten, lx, ly;
 void init(int x, int y) { lx=x, ly=y, daten=new int [lx\*ly]; }
 void readfrom(const MAT& m) { /\* read m's Elements \*/ }
public:
 MAT (int x, int y) { init(x,y); }
 MAT (const MAT& m) { init(m.xdim(), m.ydim()); readfrom(m); }
 ~MAT () { delete [] daten; }

 int xdim() const { return lx; }
 int ydim() const { return ly; }
 int\* operator[] (int rowindex) { return daten + rowindex \* lx; }
 const int\* operator[] (int rowindex) const { return daten + rowindex \* lx; }

 void operator+= (const MAT& m) { /\* add matrix elements here \*/ }
 void operator\*= (const MAT& m) { /\* matrix multiplication here \*/ }
};

inline MAT operator+ (const MAT& a, const MAT& b) {
 MAT c(a);
 c += b;
 return c;
}

inline MAT operator\* (const MAT& a, const MAT& b) {
 MAT c(a);
 c \*= b;
 return c;
}

int main()
{
 MAT m1(10,10);
 MAT m2(10,10);

 MAT m3 = m1 \* m2;

 return 0;
}

Grüße

CMБ

Solved
Hallo,

vielen Dank für dein ausführliches Beispiel! Das hat mir wirklich weiter geholfen. Mir war nicht klar das man Operatoren überladen kann, daher auch meine Verständnisschwierigkeiten mit der Aufgabe.
Nochmal Danke!

Gruss
Marco

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ahoi, sag mal du hast nich zufälligerweise den „Einstieg in die Programmierung mit C++ oder so ähnlich“ Kurs beim Prof. Dörfler an der Uni-Karlsruhe belegt oder ?