背景信息: 我和幾個朋友正在建立這個平臺的遊戲在C++的幫助OCH SFML和Box2D的一所學校分配。 其中一個要求是我們遵循「MVC模式」。C++向量遍歷抽象類
我們已經創建了類,如子彈和字符的模型。 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);
}
我會用polymorhism這將是這個樣子更像一個通用的方法:
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;
Can儘管如此,我還是不能這樣做。我對C++很陌生,所以請留下仁慈!我試過搜索,但沒有找到非常具體的答案。
錯誤,我得到在編譯時。
錯誤8錯誤C2679:二進制 '=':沒有操作員發現它接受一個右手>類型的操作數 '的std :: _ Vector_const_iterator < _Myvec>'(或沒有可接受>轉換)C:\用戶\ niklas \ multiplaya \ sfml測試\ sfml測試\視圖\ worldview.cpp 409> 1 SFML_Test
錯誤7錯誤C2664:'mp :: WorldView :: drawVector':無法將參數1從>'std ::矢量< _Ty>」到 '常量性病::矢量< _Ty> &' C:\用戶\尼古拉斯\ multiplaya \ SFML>測試\ SFML測試\視圖\ worldview.cpp 402 1 SFML_Test
'std :: vector項目符號;'不是有效的聲明:什麼是向量的模板類型? – James
@Outopulated它是一個格式問題,我修正了。 – juanchopanza