Przeciążanie operatora[]

0

Witam.
Przeciążyłem operator[] i mam w związku z tym małe pytanie, co zrobić żęby udostępniał wartość po obu stronach operatora przypisania?

float Wektor3w :: operator [] (int i)
 {
       if(i<0){
         cout << "Nastapilo przekroczenie zakresu (za mala wartosc)." << "\n" ;
         cout << "Podana liczba jest pierwsza w tabeli." << "\n" ;
         i = 0;
       }
       if(i>2){
         cout << "Nastapilo przekroczenie zakresu (za duza wartosc)." << "\n" ;
         cout << "Podana liczba jest ostatnia w tabeli." << "\n" ;
         i = 2;
       }

       return v[i];           
 }
0

Zwracać referencję zamiast kopii.

0
float*  Wektor3w :: operator [] (int i)
 {
       if(i<0){
         cout << "Nastapilo przekroczenie zakresu (za mala wartosc)." << "\n" ;
         cout << "Podana liczba jest pierwsza w tabeli." << "\n" ;
         i = 0;
       }
       if(i>2){
         cout << "Nastapilo przekroczenie zakresu (za duza wartosc)." << "\n" ;
         cout << "Podana liczba jest ostatnia w tabeli." << "\n" ;
         i = 2;
       }

       
       return &v[i];
 }

Zrobiłem to tak, funkcja działa, ale i tak nie udostępnia gdy mamy v[i]=......

0
float& Wektor3w :: operator [] (int i)
 {
       if(i<0){
         cout << "Nastapilo przekroczenie zakresu (za mala wartosc)." << "\n" ;
         cout << "Podana liczba jest pierwsza w tabeli." << "\n" ;
         i = 0;
       }
       if(i>2){
         cout << "Nastapilo przekroczenie zakresu (za duza wartosc)." << "\n" ;
         cout << "Podana liczba jest ostatnia w tabeli." << "\n" ;
         i = 2;
       }

       return v[i];           
 }

masz zwrocic referencje do typu: typ& funkcja()

0

Dzięki flabra :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1