Вы пишете operator []
, который возвращает ссылку на элемент. Будучи ссылкой, он может быть назначен через =
.
template <typename T>
class Array {
…
T& operator [](unsigned int const loc) {
…
}
};
(const
в аргументе обычно не используется, но используйте его в определении функции - однако в объявлении это не имеет смысла.)
Обычно вам нужен другой оператор версии, который является const
, так что вы все равно можете читать значения из массива const
:
Array<int> x;
Array<int> const& y = x;
std::cout << y[0]; // Won’t compile!
Чтобы компилировать последнюю строку, добавьте следующий код в ваш класс:
T const& operator [](unsigned int const loc) const {
…
}
Обратите внимание, что как возвращаемое значение, так и сама функция помечены как const
.