Вот часть кода, помогите пожалуйста реализовать перегрузку оператора []
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];
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Как написать оператор *= для длинных беззнаковых чисел методом умножения в столбик (длинная арифметика) без использования оператора *, если...
Есть проект на C++ при компиляции, которого при использование версии g++ (gcc) 49
Здравствуйте, подскажите , пожалуйста, ошибкуНе могу найти в чем проблема
Не могу нарисовать фигуру, которую создал в классеУ меня есть функция Main и класс Player