[英]Iterator on vector error for operands “=” and “!=”
using namespace std;
vector<IDrawable*>::const_iterator itDrawable;
for(itDrawable= scene.getDrawables().begin(); itDrawable!=scene.getDrawables().end();itDrawable++){
IDrawable *drawable =(*itDrawable);
drawable->draw();
}
这段代码向我传递了错误:
说明资源路径位置类型与'operator!='不匹配(操作数类型为'
std::vector<IDrawable*>::const_iterator
{aka__gnu_cxx::__normal_iterator<IDrawable* const*, std::vector<IDrawable*> >
}'和'std::vector<const IDrawable*>::const_iterator
{aka__gnu_cxx::__normal_iterator<const IDrawable* const*, std::vector<const IDrawable*> >
}')
和
说明资源路径位置类型'operator ='不匹配(操作数类型为'
std::vector<IDrawable*>::const_iterator
{aka__gnu_cxx::__normal_iterator<IDrawable* const*, std::vector<IDrawable*> >
} '和'std::vector<const IDrawable*>::const_iterator
{aka__gnu_cxx::__normal_iterator<const IDrawable* const*, std::vector<const IDrawable*> >
}')
我查过这些,应该和const_iterator有关吗? 但是我的scene.getDrawables()
看起来像:
const std::vector<const IDrawable*>& getDrawables() const {
return drawables;
}
所以迭代器应该是const_iterator对吗? 我不知道必须改变什么...
你的
const std::vector<const IDrawable*>& getDrawables() const
返回对const IDrawable*
指针向量的const IDrawable*
。 但是你的
vector<IDrawable*>::const_iterator itDrawable;
将const_iterator
声明为不同类型的向量( IDrawable*
,而不是const IDrawable*
)。 将定义更改为vector<const IDrawable*>::const_iterator itDrawable;
或者只是使用auto
在for
循环中声明迭代器,
for(auto itDrawable= scene.getDrawables().cbegin(); ...)
问题的格式隐藏了真正的问题,但是您使用了:
vector<IDrawable*>::const_iterator itDrawable;
你应该在哪里使用
vector<const IDrawable*>::const_iterator iDrawable;
同样,您然后需要
const IDrawable *drawable =...
代替
IDrawable *drawable =...
所有这些都是由于您具有std::vector<const IDrawable*>
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.