На самом деле вам не нужно перегружать оператор [].Вам просто нужно убедиться, что вы можете преобразовать Integer в int с оператором int int.
Что-то вроде этого будет работать лучше.
operator int() const
{ return GetValue(); }
Тогда вам также следует быть осторожным с вашимпечатает.
X[i].GetValue()
неверно, поскольку i = 10
в вашем примере.Это приведет к ошибке выполнения.
X[I].GetValue()
неверно в вашем примере, потому что преобразование между вашим классом и int невозможно без I.getValue()
.Я удивлен, что это не приведет к ошибке компиляции, но перегрузка оператора int приведет к этой проблеме.