frage zu operatoren
-
hi,
ich will ne klasse machen, bei der man über den [] operator auf spezielle teile zugreifen kann. wenn ich aber nun ein vergleich mal will, also z.b.
if(test[irgendwas]==irgendwasandres)
wie krieg ich das dann mit den operatoren geplant, da hab ich ja dann [] und ==
-
muss ich dann meine member funktion mit
int operator[]== deklarieren oder wie?
-
Hallo
Nein du schreibst dann 2 Operatoren, einenen für [] und einen für ==.
//als Memberfunktion T& operator[](int Index); const T& operator[](int Index) const; //als ggf. Friend-Funktion bool operator==(const T& lh, const T& rh);
-
hm bloß was muss dann dadrin stehen? mit der funktion für den [] operator geb ich ja n integer wert zurück, was muss dann die == funktion machen wenn ich den integer mit nem andren vergleichen will?
-
class klasse2{ ... bool operator==(klasse2); ... } class klasse1{ ... klasse2 operator[](int); ... }
Deine klasse2 gibt irgendwas zurück, in dem Fall vom Typ klasse2. Dafür brauchst du dann einen Vergleichsoperator.
-
Da war ich wohl zu spaet.
aber wenn deine operator[] Methode einen int zurueck gibt dann ist doch schon ein == Operator definiert.
-
Entyl_Sa schrieb:
aber wenn deine operator[] Methode einen int zurueck gibt dann ist doch schon ein == Operator definiert.
jo des woltle ich ja wissen, ob ich einfach == verwenden kann... thx
-
und was ist wenn ich mit
test[5]=3;
dem einen wert zuweisen will? wie organisiere ich das dann mit den operatoren?
-
n4pl schrieb:
und was ist wenn ich mit
test[5]=3;
dem einen wert zuweisen will? wie organisiere ich das dann mit den operatoren?ist schon orgasmisiert. beachte, daß der op[] eine referenz auf das gesuchte element zurückgibt.
-
Wenn der [] Operator eine Referenz zurueck gibt, und diese nicht const ist, dann funktioniert das mit der Zuweisung, andernfalls ist das genau die Loesung.
Korrigiert mich, aber es muss nicht umbedingt eine Referenz zurueckgeben.
-
ok danke leute!!!
gut zu wissen wie man dasvolkard schrieb:
orgasmisiert
;P
grüsse euer n4pl
-
*noch ne dumme frage stell* (sacht bescheid wenns euch nervt
)
was is mit mehreren []?
also z.b.
bsp[4][6]
sag ich dann einfach
&int operator[][] (int &a, int &b) ?
danke!!
-
Nö, es gibt nur den [] Operator. [][] ist einfach Mehrfachanwendung von []. Daraus folgt, dass bei 2D-Sachen der operator[] etwas zurückgeben muss, auf das man wieder [] anwenden kann.
-
beispielcode zu [][] auf http://www.c-plusplus.net/forum/viewtopic.php?t=57613&postdays=0&postorder=asc&start=0
-
thx @volkard.. hört sich aber alles etwas kompliziert an, ich glaub ich nehm nem () operator, sodass ich das dann mit
bla(2,4);
aufrufen kann...