Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Doppelter operator []

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
14.08.2002, 04:17 Uhr
Cer



Guten Abend.

Moeglicherweise bin ich nur muede, denn mir scheint, die Loesung liegt nahe. Trotzdem frag' ich mal, dachte ich mir und nachdem mir nichts einfiel, lieber nach:

Ich moechte eine Matrix-Klasse implementieren. Die Matrizen sind 4x4 Werte gross. Die einzelnen Werte sollten ueber den []-Operator ausgelesen werden koennen.

Beispiel: (FMat ist der Name der Klasse)


C++:
FMat m;
float t = m[1][3];


Das funktioniert leider nicht, da sich der Operator auf diese Weise nicht schachteln lassen will, denn - soweit ich weiss - sieht der "endgueltige" Funktionsaufruf aus dem Beispiel oben so aus:
m.operator [](1).operator [](3)

Das ginge ja noch irgendwie, sofern der Operator eine Referenz auf *this zurueckliefert, nur liefert der Ausdruck dann logischerweise nicht den gewuenschten Wert aus der Matrix zurueck. Wuerde der Operator einen float zurueckliefern, funktioniert es mit dem Verschachteln natuerlich nicht.

Hm. Gibt es ueberhaupt eine Moeglichkeit den Kram so zu implementieren, wie ich es dort vorhabe?

Edit:
Ach, ja. Wie soll denn sowas wie m[1][3] = s funktionieren? Und wie funktioniert das, wenn man den Operator nur "einmal" (m[1] = s) benutzen wuerde? Sollte er dann eine Referenz auf *this zurueckliefern und dann wird s irgendwie mit einem Konstruktor von FMat umgewandelt oder wie?

Danke.
--
-C

Dieser Post wurde am 14.08.2002 um 04:26 Uhr von Cer editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
14.08.2002, 08:22 Uhr
virtual
Sexiest Bit alive
(Operator)


hi,

imho geht das nur so:

C++:
class FVec
{
...
float& operator [] (int index);
...
};

class FMat
{
...
FVec& operator [] (int index);
...
};


Man muss also die Matrix als einen Vector von Vectoren ansehen...
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: