【发布时间】:2013-02-25 21:56:35
【问题描述】:
我想在向量上定义一个迭代器类,它的私有成员p如何匹配std::vector::begin()的返回类型?
class A{
struct element{
...
}
class e_iterator {
e_iterator() : p()
...
private:
element* p;
};
e_iterator e_begin() const{
e_iterator Iter;
Iter.p = e_.begin(); // error
return Iter;
}
std::vector<element> e_;
}
我收到element* p 的错误:
error: cannot convert 'std::vector<element, std::allocator<element>>::const_iterator' to 'element*' in assignment
【问题讨论】:
-
你到底想做什么和实现什么?
-
@AndyProwl:
e_显然是std::vector<element> const &。 -
你可能想看看boost.iterator。
-
你的函数调用
e_.begin()返回一个const_iterator(这就是你的编译器似乎说的),而Iter.p是一个非const指针element。因此,即使begin()返回的迭代器类型是指针,也无法进行转换。无论如何,std::vector<>的迭代器不保证是指针,尽管在大多数实现中它会是。 -
很抱歉有歧义。
element是一个结构体,定义在 std::vectore_.
标签: c++ stl iterator type-conversion