背景情報: 私と数人の友人は、学校の課題で sfml と box2d の助けを借りて、C++ でこのプラットフォーム ゲームを構築しています。要件の 1 つは、「MVC パターン」に従うことです。
モデル用に Bullet や Character などのクラスを作成しました。ビューには BulletView と CharacterView (どちらも抽象クラスである sf::Drawable を継承しています)。
描画用のコードを複製する代わりに、このように drawBullets と drawCharacter の 2 つのメソッドを用意します。
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