c++ - 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(); } this code passing me error:
description resource path location type no match 'operator!=' (operand types '
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*> >}')
and
description resource path location type no match 'operator=' (operand types '
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*> >}')
i have looked these , should have const_iterator ? yet scene.getdrawables() looks like:
const std::vector<const idrawable*>& getdrawables() const { return drawables; } so iterator should const_iterator right ? have no clue has change...
your
const std::vector<const idrawable*>& getdrawables() const returns const reference vector of const idrawable* pointers.
vector<idrawable*>::const_iterator itdrawable; declares const_iterator vector of different type (idrawable*, not const idrawable*). either change definition vector<const idrawable*>::const_iterator itdrawable; or use auto declare iterator in for loop,
for(auto itdrawable= scene.getdrawables().cbegin(); ...)
Comments
Post a Comment