_>Или делать прокси, в которой тоже определен [], или довольствоваться GetAt(int x, int y);
Совершенно необязательно. Если элементы в памяти лежат построчно, то подойдет обычный operator[](int row) возвращающий указатель на элемент в начале строки
Только адресация будет не [x][y] а как и в обычном Си [row][col]
Вторая [] обработается автоматически — как с обычным указателем. Но если нужен контроль выхода за границу -- то только через прокси.