背景情報: 私と2人の友人が、C++でこのプラットフォームゲームを作成しています。これは、och sfmlとbox2dを学校に割り当てるためです。 要件の1つは、「MVCパターン」に従うことです。C++ベクトル抽象クラスを反復する
私たちはモデルのためにBulletやCharacterのようなクラスを作成しました。また、ビューのBulletViewとCharacterView(どちらも抽象クラスであるsf :: Drawableを継承します)。
代わりの描画のためのコードを複製し、この
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);
}
のような二つの方法のdrawBulletsとdrawCharacterを持っている私はこのようになります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テスト\ view \ worldview.cpp 409> 1 SFML_Test
エラー7エラーC2664: 'mp :: WorldView :: drawVector':> 'std :: 1からパラメータ1を変換できません。ベクトル< _Ty> constのSTD」から '::ベクトル< _Ty> &' はC:\ Users \ユーザーニクラス\ multiplaya \ SFML>テスト\ SFMLテスト\ビュー\のworldview.cpp 402 1 SFML_Test
'std :: vector bullets;'は有効な宣言ではありません:ベクトルのテンプレートタイプは何ですか? – James
@Autopulatedそれは私が修正した書式設定の問題でした。 – juanchopanza