背景信息:我和几个朋友在 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);
}
我想要一个使用多态的更通用的方法,它看起来像这样:
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);
}
bulletView 向量声明如下:
std::vector<BulletView*> bullets;
不能让它工作。我对 C++ 有点陌生,所以请怜悯!我试过搜索,但没有找到非常具体的答案。
我在编译时遇到的错误。
错误 8 错误 C2679:二进制“=”:未找到采用“std::_Vector_const_iterator<_Myvec>”类型的右侧 > 操作数的运算符(或没有可接受的 > 转换)c:\users\niklas\multiplaya\ sfml 测试\sfml 测试\view\worldview.cpp 409 >1 SFML_Test
错误 7 错误 C2664: 'mp::WorldView::drawVector' : 无法将参数 1 从 >'std::vector<_Ty>' 转换为 'const std::vector<_Ty> &' c:\users\niklas\multiplaya \sfml >test\sfml 测试\view\worldview.cpp 402 1 SFML_Test