我创建了一个只读迭代器,它允许我在 for 循环中更方便地使用它,然后使用 std 迭代器,类似于 boost 对 FOREACH 所做的(不是那么好但足够好:))
现在看起来像这样:
for(ReadOnylIterator<MyClass *> class = parent.getIterator(); class.end(); ++class)
class->function();
我现在遇到的问题是,我必须在返回迭代器的父级上实现一个函数。由于 std 容器具有相同的语法,我想知道是否可以在 Iterator 上定义一个复制构造函数/赋值运算符,它接受任何 std:: 容器并自行创建副本,而不是要求类返回它。
当然,我想避免自己定义所有这些,因为它们有很多:
ReadOnlyIterator<T> &operator=(std::list<T> const &v)
ReadOnlyIterator<T> &operator=(std::vector<T> const &v)
...
有没有办法做到这一点?当我查看向量的来源时,我看不到一个通用的基类,所以我认为这可能是不可能的。
我不明白为什么赋值运算符不起作用。
在我的代码中,我像这样测试它:
std::vector<SimpleClass *>t;
ReadOnlyIterator<SimpleClass *> &it = t;
我得到
error C2440: 'initializing' : cannot convert from 'std::vector<_Ty>' to 'ReadOnlyIterator<T> &'