Operator [] überladen
-
Hallo,
Ich würde gerne die Operator 2 Mal überladen. Einmal, damit er Daten ausliest und zum 2., um die Daten zu setzen.
Ist das überhaupt möglich?
short operator[](int Obj);
damit lese ich den Code aus.
Jetzt würde ich gerne einen Operator überladen der folgende Zeile nimmt:
var x[3] = 5
jetzt würde ich gerne nen überladenen Operator haben, der sowohl die 3 als
auch die 5 bekommt...Ist das möglich?
Herzlichen Dank
Gruss,
Mathias
-
Ja, du musst eine Referenz zurückliefern:
short& operator[](int Obj);
Das ist dann der Prototyp der Methode. Der Rest bleibt gleich.
Durch die Referenz kann die Original-Variable geändert werden.Edit:
Dann brauchst du auch nicht mehr zwei verschiedene Methoden zum Auslesen und zum Ändern. Am besten macht man dann aber noch eine Methode für const-Instanzen:short operator[](int Obj) const;
MfG
Felix
-
(totaler C++ Anfänger) schrieb:
Ich würde gerne die Operator 2 Mal überladen. Einmal, damit er Daten ausliest und zum 2., um die Daten zu setzen.
2 mal überladen ist keine schlechte Idee
class Obj { //... public: short& operator[]( std::size_t index ); // fuer referenz für non-const Objekte short operator[]( std::size_t index ) const; // kopie für const Objekte }; // Fuer Objekte als Rueckgabewerte bieten sich Referenz & Const-Referenz an.
(totaler C++ Anfänger) schrieb:
Jetzt würde ich gerne einen Operator überladen der folgende Zeile nimmt:
var x[3] = 5
jetzt würde ich gerne nen überladenen Operator haben, der sowohl die 3 als
auch die 5 bekommt...Was meinst du damit?
-
Phoemuex schrieb:
Ja, du musst eine Referenz zurückliefern:
[...]short operator[](int Obj) const;
Nur so als Hinweis.
-
Phoemuex schrieb:
Am besten macht man dann aber noch eine Methode für const-Instanzen:
short operator[](int Obj) const;
Nur so als Hinweis, Michael
-
thx
Habs hingekriegt!was so ein kaufmännisches "Und" alles bewirken kann
Danke allen!
-
bei short is es zwar egal, aber bei komplexeren objekten bitte sowas
const Objekt& operator[](int Obj) const;
-
finix schrieb:
Phoemuex schrieb:
Am besten macht man dann aber noch eine Methode für const-Instanzen:
short operator[](int Obj) const;
Nur so als Hinweis, Michael
Raff ich nicht. Und schreib bitte nix in Zitate, was derjenige nicht gesagt hat!