Я хочу создать оператор [] в случае двумерного вектора. После поиска я обнаружил, что невозможно передать два аргумента. Как я могу получить значение m_matrix[i][j]
в основном?Оператор [] в двумерном векторе
соответствующий код:
class MyMatrix
{
public: // Methods
MyMatrix();
~MyMatrix();
int operator[] (int n);
private: // Attributes
int m_n;
int m_m;
std:: vector <std:: vector <int> > m_matrix;
};
int MyMatrix::operator[](int n, int m) // in the cpp
{
if (n>=0 && m>=0 && n<=m_n && m<=m_m)
{
return m_matrix[n-1][m-1];
}
else
{ cout<<"******************"<<endl;
cout<<"No valid index"<<endl;
cout<<"******************"<<endl;
return 0;
}
}
...
mat_test1[2][2]; // for example in the main
Что случилось с этим?
'operator []' может принимать только один аргумент, период. Вы можете использовать 'operator()' или иметь 'operator []' вернуть прокси-сервер, реализующий сам 'operator []'. –
Вместо этого вы можете использовать 'operator() (size_t, size_t)'. – juanchopanza
Как насчет 'std :: vector & operator [] (int n);'? –