Witam,
Chciałbym prosić o pomoc w następującym problemie. Mam klasę Matrix która jako swój prywatny składnik posiada multiarray . Owy tablica wypełniona jest już wartościami. W funkcja która przeładowuje operator+ chciałem użyć tej tablicy zarówno dla obiektu stojącego na lewo od "+" jak i na prawo . Problem w tym,że najwyraźniej nie umiem się do niej odwołać . Bardzo proszę o poradę.
Kod klasy :
template <class T>
class Matrix {
private :
typedef boost::multi_array<T, 2> ABC;
int result_i;
int result_j;
public:
Matrix(int i,int j,std::string const & msg) {
this->result_i = i;
this->result_j = j;
ABC a(boost::extents[i][j]);
wypelnij_liczbami(a,msg);
}
/**
* Inne funkcje
*/
};
Kod funkcje w której chcę odwołać się do multiarray ABC
template<typename T>
Matrix<T> Matrix<T>::operator+(const Matrix<T> & RightMatrix) {
Matrix<int> wynik_sumowania(this->getI(),this->getJ());
for(int x = 0; x < this->ABC.shape()[0]; x++) {
for(int y = 0; y < this->ABC()[1]; y++) {
wynik_sumowania.ABC[x][y] = ABC[x][y] + RightMatrix.ABC[x][y];
}
}
return wynik_sumowania;
}
/*
* Kompilator z każdym wystąpieniem ABC wyrzuca
* __ invalid use of 'Matrix<int>::ABC__
* Próbowałem się odwołać zarówno poprzez __this->__ jak i __this.__ nadal to samo
* Próbowałem stowrzyć metodę GETABC która zwróci mi multiarray jednak tam jest tam sam problem przy __return this->ABC;__
Z góry dziękuję za pomoc.
Pozdrawiam,
soyer