Thema: [][] - Operator anbieten
- 
	30.09.2012, 17:56 #1U-Labs Routinier  
 - Registriert seit
- 19.11.2011
- Beiträge
- 496
 Thanked 412 Times in 268 Posts [][] - Operator anbieten [][] - Operator anbietenHallo, 
 
 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.:
 Hier scheint zwar das Ziel erreicht, aber da ein Zeiger zurückgegeben wird, habe ich vollen Kontrollverlust.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:
 Hier kann ich zwar beide Indizes überprüfen, aber der Aufruf ähnelt - logischerweise - sehr einem Funktionsaufruf.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 anbietenVon 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.
 
									 
														 
														 
					
					
					
						 Zitieren
  Zitieren