小编Nik*_*son的帖子

C++ Vector迭代抽象类

背景信息:我和几个朋友正在使用帮助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 …

c++ iterator vector sfml

4
推荐指数
1
解决办法
3232
查看次数

标签 统计

c++ ×1

iterator ×1

sfml ×1

vector ×1