Вот часть кода, помогите пожалуйста реализовать перегрузку оператора []
class Matrix
{
protected:
std::vector<std::vector<int> > Matr;
public:
int* operator[](int n)
{
return Matr[n];
}
Matrix(size_t n) : Matr(n, std::vector<int>(n))
{
if (n < 1)
{
throw Exception();
}
}
В вашем варианте логичнее
vector<int>& operator[](size_t i)
{
return Matr[i];
}
и соответствующая константная версия
const vector<int>& operator[](size_t i) const
{
return Matr[i];
}
Ну, и, возможно, дописать проверки на выход за пределы диапазона...
Если ну совершенно необходимо возвращать int*, то return &Matr[i][0];
Обычно этот оператор перегружается в виду двух функций для константного и не константного объектов. То есть обе функции следует включить в определение класса. Например,
std::vector<int> & operator[]( size_t n )
{
return Matr[n];
}
const std::vector<int> & operator[]( size_t n ) const
{
return Matr[n];
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей