Thema: [][] - Operator anbieten
-
30.09.2012, 17:56 #1
- Registriert seit
- 19.11.2011
- Beiträge
- 496
Thanked 412 Times in 268 Posts[][] - Operator anbieten
Hallo,
in einer Klasse für Matrizen möchte ich, dass auf die einzelnen Elemente wie bei einem zweidimensionalen Array zugegriffen werden. C++ kennt den Operator "[][]" ansich ja nicht, deswegen kann man ihn nicht überladen. Ich habe mir zwei Workarounds gebastelt, die ich unschön finde:
1.:
Code:class Matrix { public: Matrix() {} float* operator[] (const int iRow) { assert(iRow >= 0 && iRow < ROWS); switch(iRow) { case 0: return &m_aElements1[0]; case 1: return &m_aElements2[0]; case 2: return &m_aElements3[0]; case 3: return &m_aElements4[0]; } } private: static const int ROWS = 4; static const int COLS = 4; float m_aElements1[COLS]; float m_aElements2[COLS]; float m_aElements3[COLS]; float m_aElements4[COLS]; }; int main(int argc, char **argv) { Matrix m; m[0][1] = 4; std::cout << m[0][1]; }
Und die zweite Möglichkeit:
Code:class Matrix { public: Matrix() {} float& operator() (const int iRow, const int iCol) { assert(iRow >= 0 && iRow < ROWS); assert(iCol >= 0 && iCol < COLS); return m_aElements[iRow][iCol]; } private: static const int ROWS = 4; static const int COLS = 4; float m_aElements[ROWS][COLS]; }; int main(int argc, char **argv) { Matrix m; m(0, 1) = 4; std::cout << m(0, 1); }
Kennt ihr andere Möglichkeiten? Außer die Sichtbarkeit des Arrays zu ändern...Geändert von Mr. White (30.09.2012 um 17:58 Uhr)
Ähnliche Themen
-
Bots für Spiele anbieten illegal?
Von PartyFreak im Forum Recht- und VerbraucherschutzAntworten: 7Letzter Beitrag: 24.04.2014, 10:53 -
Freundin die Verlobung anbieten !
Von sL1tchK0ss im Forum RealLifeAntworten: 11Letzter Beitrag: 25.01.2013, 15:26 -
Shell wird kostenloses WLAN in Tankstellen anbieten
Von Mickeyy im Forum IT & Technik NewsAntworten: 2Letzter Beitrag: 07.02.2012, 18:08
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.