[英]Vector iterator
我有一个这样的载体
std::vector<Sprite*> mDrawings;
std::vector<Sprite*>::iterator it = mDrawings.begin();
这给出了一个错误
Error: no suitable user-defined conversion from std::_Vector_iterator<std::_Vector_val<Sprite *, std::allocator<Sprite *>>> to std::_Vector_iterator<std::_Vector_val<Sprite *, std::allocator<Sprite *>>> exists
但是如果我做以下
typedef std::vector<Sprite*> list;
list mDrawings;
list::iterator it = mDrawings.begin();
然后工作???。
更新:对不起,似乎由于与当前代码无关的错误而产生了该错误。 我只是看到IDE用红色下划线,我认为这是我的应用程序无法编译的原因。
您粘贴的代码实际上没有显示错误。 但是,这是另外一个黑暗的镜头:
在您的原始情况下, mDrawings
是否可能是某个类的成员变量(只是从m
前缀猜测),而您的实际代码在const方法中? 如果是这样,您将尝试将const_iterator
(因为在const向量上调用begin()
会产生这种情况) iterator
,这是不可能的。
尝试使用
std::vector<Sprite *>::const_iterator it = mDrawings.begin();
这样更好吗?
我认为您粘贴了错误的代码-我想也许您做了std::vector<Sprite>::iterator it = mDrawings.begin();
没有*
编辑:响应更新的问题:
始终查看第一个编译器错误-如ideone上所示,您的代码缺少#include
使Sprite
可见。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.