Przeciazenie operatorow

0

Witam,
mam do napisania pewien program i w jednym poleceniu mam problem. Mamy stworzyc klase przechowujaca tablice i jej rozmiar oraz przeciazyc [] w taki sposob aby dla danego indeksu zmienic wartosc czyli jak dla normalnej tablicy. Fragment programu:

 
class Array{
    private:
    int size;
    double* tab;

    public:
        Array(int r, double *t):size(r),tab(t){};
        double* operator[](int value){
        return &tab[value];
        };

    friend ostream& operator<<(ostream &, const  Array&);

};

ostream & operator <<(ostream & s, const Array & v )
{
    for(int i=0; i<v.size; i++)s << v.tab[i] << ',';
    s << endl;
    return s;
}

int main(){
    double t[] = {1,3,3};
    Array pp(3,t);

    pp[1] = 10000;

    cout << pp;

}

kompilator wyrzuca blad: error:lvalue required as left operand of assignment

niestety nie bardzo wiem jak w jaki sposob przeciazyc operatory, aby ominac ten problem. Moze ktos ma jakies wskazowki ;)?

1
  1. Nie możesz tak kopiować tablic.
  2. Unikaj inkrementacji/decrementacji przyrostkowej
  3. Unikaj zbędnych średników
class Array
  {
   private:
   unsigned size;
   double *tab;
   public:
   Array(unsigned size,double *src):size(size),tab(new double[size]) { memcpy(tab,src,size*sizeof(double)); }
   double &operator[](int value) { return tab[value]; }
   friend ostream& operator<<(ostream &s, const Array &v)
     {
      for(unsigned i=0;i<v.size;++i) s<<(", "+(!i))<<v.tab[i];
      return s;
     }
  };
 
int main()
  {
   double t[]={1,3,3};
   Array pp(sizeof(t)/sizeof(*t),t);
   cout<<pp<<endl;
   pp[1]=10000;
   cout<<pp<<endl;
   return 0;
  }
0

Dzieki wielkie ;)

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