@ yoni: можно указать адрес любого члена вектора (если он существует). Вот как это делается.
int& MyObject::operator[](size_t index)
{
return mVector[index];
}
const int& MyObject::operator[](size_t index) const
{
return mVector[index];
}
Это возможно, потому что std :: vector гарантированно хранит элементы в непрерывном массиве. Оператор [] из std :: vector возвращает ссылочный тип значения, которое он хранит. Если вы перегружаете оператор [], вам просто нужно передать эту ссылку из вашей функции operator [].
ПРИМЕЧАНИЕ: std :: vector позаботится о проверке границ. С решением, которое дает @Griwes, нет проверки границ.
РЕДАКТИРОВАТЬ: Похоже, Griwes отредактировал свое решение.