【发布时间】:2016-11-08 13:39:27
【问题描述】:
在实现 iterator 和 const_iterator 或类似的类对时,避免代码重复的最佳做法是什么?
- 是否通常使用大量的 const_cast 来根据 const_iterator 实现迭代器?
- 是否使用某种特征类并最终将 iterator 和 const_iterator 定义为公共模板的不同实例?
这似乎是一个足够常见的问题,需要一个规范的解决方案,但我找不到任何专门讨论这个问题的文章。
【问题讨论】:
-
对不起,太宽泛了。许多不同的方法。遗产。模板。没有普遍认可的“最佳实践”。每个案例各不相同。
-
我更喜欢由
value_type、pointer_type、reference_type参数化的模板类。例如:template <typename PType> class CustomIterator {};typedef CustomIterator<MyClass*> iterator_type;typedef CustomIterator<const MyClass*> const_iterator_type;
标签: c++ constants class-design code-duplication