operater[] und '=' zuweisung???
-
habe folgenden Operatior geschreiben:
// Zugriffoperator int operator[](const int &index){ if(paAlternatives.GetSize()-1 < index) return -1; return paAlternatives.ElementAt(index); }um diese zu ermöglichen!!
int i= xxx[0];will ich aber nun
int i=4;
xxx[0]=i;
machen kommt fehler...
errorC2106: '=' Linker Operatnd mud ein L-Wert sein
muss ich noch nen änhnlich operator überschreiben ????
-
Du könntest die Funktion anpassen, daß sie eine Referenz (int&) zurückgibt anstelle eines Wertes. Allerdings müsstest du dir dann etwas anderes überlegen für die Fehler-Abfrage (ein Literal kannst du nicht per Referenz zurückgeben).
-
Nein, aber du solltest eine Referenz zurückgeben, damit das Schreiben möglich wird.
//Für "normale" Vektoren int& operator[](int index){ return paAlternatives.ElementAt(index); } //Für const Vektoren const int& operator[](int index) const { return paAlternatives.ElementAt(index); }Die Fehlerabfrage würde ich in der ElementAt-Methode unterbringen und einfach mit nem assert machen. Hart, aber fair.
edit:
damn, too slow.
-
ok danke:
der Operator mit "const" verwende ich wenn ich
xxx[0]=1;
mache oder?
-
BorisDieKlinge schrieb:
ok danke:
der Operator mit "const" verwende ich wenn ich
xxx[0]=1;
mache oder?
Nein, den "normalen" op brauchst du bei:
Vector v; v[0] = 7;Den anderen bei:
const Vector v; v[0] = 7; //Fehler, da op[] ja eine const Referenz zurückgibt.MfG
GPC
-
BorisDieKlinge schrieb:
ok danke:
der Operator mit "const" verwende ich wenn ich
xxx[0]=1;
mache oder?
Du solltest beide Operatoren implementieren. Welcher verwendet wird entscheidet der Compiler schon korrekt!
grüße