【发布时间】:2012-05-13 19:42:00
【问题描述】:
背景信息: 我和几个朋友在 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 test\sfml test\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 test\view\worldview.cpp 402 1 SFML_Test
【问题讨论】:
-
std::vector bullets;不是一个有效的声明:向量的模板类型是什么? -
@Autopulated 这是一个格式问题,我已修复。