是否可以使用boost迭代器外观实现任何迭代器?我不想在我的基类中定义实现细节
class Base
{
public:
typedef std::vector<int>::iterator iterator;//implementation detail
...
virtual iterator begin()=0;
virtual iterator end()=0;
};
Run Code Online (Sandbox Code Playgroud)
或者我必须从头开始写一个;
您发布的代码已经修复了从中返回的迭代器的类型Base以及它std::vector<int>::iterator可能不是您想要的所有实现.Jeremiah的建议是一种方法,有一个缺点:你松散与STL的兼容性......我知道三个多态迭代器包装器的实现:
any_iterator(实施boost::iterator_facade)opaque_iterator库(谷歌它),或any_iterator的层次结构.问题是难度比它看起来......我做了一个尝试自己主要是因为我需要协方差any_iterators类型参数(any_iterator<Derived>应该是自动转换为any_iterator<Base>),这是很难与像迭代器STL简洁地实现.AC#like Enumerator<T>更容易实现(*)(并且imho通常比类似STL的迭代器对更简洁)但同样,你"松散"STL.
(*)=当然没有'收益':-)
| 归档时间: |
|
| 查看次数: |
2372 次 |
| 最近记录: |