背景信息:我和几个朋友正在使用帮助och sfml和box2d在C++中构建这个平台游戏,用于学校作业.其中一个要求是我们遵循"MVC模式".
我们为模型创建了Bullet和Character等类.并且BulletView和CharacterView(都继承了sf :: Drawable,它是一个抽象类)用于视图.
而不是重复绘制代码,并有两个方法drawBullets和drawCharacter像这样
void WorldView::drawBullets()
{
std::vector<BulletView*>::iterator it;
for ( it = bullets.begin() ; it < bullets.end(); it++ )
window->draw(**it);
}
void WorldView::drawCharacters()
{
std::vector<CharacterView*>::iterator it;
for ( it = characters.begin() ; it < characters.end(); it++ )
window->draw(*it);
}
Run Code Online (Sandbox Code Playgroud)
我想要一个使用多态的更通用的方法,看起来像这样:
void WorldView::drawVector(const std::vector<sf::Drawable*>& vector)
{
std::vector<sf::Drawable*>::iterator it;
for ( it = vector.begin() ; it < vector.end(); it++ )
window->draw(**it);
}
Run Code Online (Sandbox Code Playgroud)
bulletView向量声明如下:
std::vector<BulletView*> bullets;
Run Code Online (Sandbox Code Playgroud)
虽然不能让这个工作.而且我对C++有点新意,所以请怜悯!我试过搜索,但没有找到非常具体的答案.
编译时得到的错误.
错误8错误C2679:二进制'=':找不到运算符,它采用类型'std :: _ Vector_const_iterator <_Myvec>'的右手>操作数(或者没有可接受的>转换)c:\ users \niklas\multiplaya\sfml test\sfml test\view\worldview.cpp 409> 1 SFML_Test …