Мне кажется, что этот код встречается довольно часто в моем коде, когда две функции выполняют одну и ту же задачу, кроме постоянства их параметров / возвращений.
int& myClass::getData()
{
return data;
}
// called for const objects
const int& myData::getData() const
{
return data;
}
Это оскорбляет мое чувство СУХОГО. Для однострочника это не проблема, но с увеличением getData () становится очевидным дублирование.
Я знаю, ПОЧЕМУ мне нужны оба метода, но чувствую, что должен быть лучший способ реализовать это. Может ли помочь трюк с шаблоном, или у меня должен быть один метод, который вызывает другой метод приведения константы туда-сюда при необходимости?
ДОБАВЛЕНО: В качестве более реального примера приведу пример типичной реализации STL vector :: at ():
const_reference at(size_type _Off) const
{ // subscript nonmutable sequence with checking
if (size() <= _Off)
_Xran();
return (*(begin() + _Off));
}
reference at(size_type _Off)
{ // subscript mutable sequence with checking
if (size() <= _Off)
_Xran();
return (*(begin() + _Off));
}