Здравствуйте, Аноним, Вы писали:
А>Нужно сделать матрицу внутри которой элементы храняться в векторе. Требуется только обращаться к элементам 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.