Простое решение состоит в том, чтобы реализовать operator[]
, чтобы оно "отслаивалось" только в первом измерении:
#include <cstdlib>
class MyClass
{
std::vector<std::vector<int> > foo;
public:
// grant write access
std::vector<int>& operator[](size_t index)
{
return foo[index];
}
// grant read access
const std::vector<int>& operator[](size_t index) const
{
return foo[index];
}
};
Вам необходимы две перегрузки из-за правильности const.(Если вы хотите предоставить доступ только для чтения, а не для записи, вам, конечно, не нужна неконстантная версия.)