[C++] Przeciążenie operatora [][]


(misza_88) #1

Witam serdecznie,

mam za zadanie napisać klasę, w której między innymi muszę przeciążyć właśnie operator [][]. Nie mam pojęcia jak do tego podejść. Program ma odczytać dwa parametry (kolumnę i wiersz) i wyświetlić wartość komórki.

Czyli dla przykładu:

cout << Matrix[2][4];

Gdyby chodziło o operator [] to nie miałbym z tym żadnego problemu. Ktoś nakieruje mnie na rozwiązanie mojego problemu?


([alex]) #2

jeżeli operator [] zwróci np double*

to Matrix[y] - jest tablicą double - double *

więc Matrix[y][x] - to double.

Drugi sposób - operator [] zwraca specjalną klasę wewnętrzną która z kolei ma przeciążony operator [].


(etam) #3

Rozwiązanie trzecie: przeciążyć operator () z dwoma argumentami.


([alex]) #4
  • Jak zabić robala?

  • Trucizną lub kapciem.

  • Rozwiązanie trzecie, nie zabijać robala! :stuck_out_tongue_winking_eye:


(misza_88) #5

Odpada bo to nie jest przeciążenie operatora[] :stuck_out_tongue:


(linux_to_syf_^^) #6

Pytanie po co chcesz go przeciążać :wink:? Ale operator [] podobno potrafisz przeciążyć, a operator [][] nie istnieje :P. Co rozwiązuje Twoje problemy z nim związane :D.


(misza_88) #7

linux_to_syf_^^ , gdybym za zadanie miał przeciążyć [] w dowolny sposób to bym nie zakładał tematu :stuck_out_tongue:


(Marcin Obala) #8

Właśnie chodzi o to, że operator [][] nie istnieje. Jak masz tablicę dwuwymiarową to tak naprawdę tablica tablic w uproszczeniu. Tak więc pierwszym operatorem[] wyciągasz z tablicy tablic tablicę, a następnie drugim operatorem [] wyciągasz już pojedynczy element tablicy. Nie dałeś konkretnego przykładu więc ciężko doradzić. Pokaż swoją klasę a wtedy będzie łatwiej.


(etam) #9

http://www.parashift.com/c++-faq/matrix ... array.html

http://www.parashift.com/c++-faq/matrix ... cript.html