Каковы наилучшие методы предотвращения дублирования кода при реализации пар классов, таких как iterator
и const_iterator
или аналогичные?Лучшая практика избежания дублирования кода при реализации классов итератора и const_iterator
- Обычно ли реализуется итератор в терминах const_iterator, используя множество const_casts?
- Использует ли какой-то класс признаков и в конечном итоге определяет итератор и const_iterator как разные экземпляры общего шаблона?
Это похоже на довольно распространенную проблему с каноническим решением, но я не нашел статей, посвященных этому.
К сожалению, слишком широк. Много разных подходов. Наследование. Шаблоны. Не существует универсальной согласованной «лучшей практики». Каждый отдельный случай меняется. –
Я предпочитаю шаблонный шаблон, параметризованный 'value_type',' pointer_type', 'reference_type'. Например: 'template class CustomIterator {};' 'typedef CustomIterator iterator_type;' 'typedef CustomIterator const_iterator_type;' –
http://stackoverflow.com/questions/2150192/how- к-код избегать дублирования реализующих-сопзЬ-и-неконстантных-итераторов –