【发布时间】:2015-05-11 17:02:35
【问题描述】:
using namespace std;
vector<IDrawable*>::const_iterator itDrawable;
for(itDrawable= scene.getDrawables().begin(); itDrawable!=scene.getDrawables().end();itDrawable++){
IDrawable *drawable =(*itDrawable);
drawable->draw();
}
此代码将错误传递给我:
描述资源路径位置类型与“操作员!=”不匹配 (操作数类型是 '
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 对吧? 我不知道要改变什么......
【问题讨论】:
-
你看不出
getDrawables()返回的类型和你声明迭代器的类型有什么区别? -
大声笑,不,我没有哈哈:p
-
不,这是唯一的吸气剂...
标签: c++ pointers vector iterator