Re: Пример матрицы
От: Starik_Hottabych  
Дата: 19.11.06 20:30
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Нужно сделать матрицу внутри которой элементы храняться в векторе. Требуется только обращаться к элементам x(i,j)=X;

А>Y=x(i,j); Почему не работает код ниже и что в нем криво?

А>
А>struct matrix {
А>   std::vector<MyStruct> v;
А>   int dim1, dim2;
А>   matrix(int _dim1 = 0, int _dim2 = 0): dim1(_dim1), dim2(_dim2) {
А>       v.reserve(dim1*dim2);
А>   }
А>   double & operator(int index1, int index2){
А>      return &v[index1*dim1+index2];
А>   }
А>   double operator(int index1, int index2) const{
А>      return v[index1*dim1+index2];
А>   }
А>};
А>


Где указан какой оператор перегружаете?
Правильно
<return value> operator<operator>(argument list)

В вашем случае Вы упустили <operator>, например = или () или какой-то еще который Вы перегружаете.Судя по всему Вы перегружаете оператор ()
слудовательно Вам надо было писать следующее
double operator()(int,int)


Еще одно замечание: когда идет передача по ссылке то использовать оператор изъятия адреса не нужно.
Вы пишете:
double & operator()(int index1,int index2){
return &v[index1*dim1+index2];
}

а надо
double &operator()(int index1,int index2){
return v[index1*dim1+index2];
}


Вдобавок не понятно зачем использовать в данном случае структуру а не класс, и в данном вопросе я солидарен с Phoenickx.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.