struct BananaHolder
{
vector<Banana>& getBananas();
const vector<Banana>& getBananas() const;
};
Мои занятия загромождены этим видом дублирования.
Есть ли более чистая, более элегантная альтернатива?
Если ваш класс имеет возвращать ссылки, и если он должен возвращать ссылку на модифицируемый вектор при вызове модифицируемого объекта, то я не думаю, что есть способ избежать дублирования — по крайней мере, не объявление дубликата.
Обратите внимание, что некоторые типы стандартной библиотеки также страдают от той же проблемы. Например, контейнеры последовательности, такие как std::vector
иметь как const
и неconst
перегрузка operator []
, at()
, back()
, front()
, data()
, и так далее.
Других решений пока нет …