C++ “操作数向量错误迭代器”=&引用;及"!=&引用;

C++ “操作数向量错误迭代器”=&引用;及"!=&引用;,c++,pointers,vector,iterator,C++,Pointers,Vector,Iterator,所以迭代器应该是常量迭代器,对吗? 我不知道要改变什么…你的 const std::vector<const IDrawable*>& getDrawables() const { return drawables; } 将常量迭代器声明为不同类型的向量(IDrawable*,而不是const IDrawable*)。将定义更改为vector::const_iterator itDrawable或只需使用auto在for循环中声明迭代器 vector

所以迭代器应该是常量迭代器,对吗? 我不知道要改变什么…

你的

const std::vector<const IDrawable*>& getDrawables() const {
        return drawables;
    }
将常量迭代器声明为不同类型的向量(
IDrawable*
,而不是
const IDrawable*
)。将定义更改为
vector::const_iterator itDrawable
或只需使用
auto
for
循环中声明迭代器

vector<IDrawable*>::const_iterator itDrawable; 
你的

将常量迭代器声明为不同类型的向量(
IDrawable*
,而不是
const IDrawable*
)。将定义更改为
vector::const_iterator itDrawable
或只需使用
auto
for
循环中声明迭代器

vector<IDrawable*>::const_iterator itDrawable; 

问题的格式隐藏了真正的问题,但您使用了:

for(auto itDrawable= scene.getDrawables().cbegin(); ...)
而不是

const IDrawable *drawable =...

所有这些都是由于您有一个
std::vector

问题的格式隐藏了真正的问题,但您使用了:

for(auto itDrawable= scene.getDrawables().cbegin(); ...)
而不是

const IDrawable *drawable =...

所有这些都是因为您有一个
std::vector

您没有看到
getDrawables()
返回的类型与您声明迭代器为的类型之间有任何差异?lolz,不,我没有哈哈:pNo,这是唯一的getter…您没有看到
getDrawables()类型之间的任何差异
返回和声明迭代器的类型?lolz,不,我没有haha:pNo,这是唯一的getter。。。
const IDrawable *drawable =...
IDrawable *drawable =...