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