現在、私のコードに問題があります。私はすべてを試みた。 image is here 誰かが私を助けてくれることを願っています:)。 Btw私はC++に新しいですマップからすべてのスプライトを返すC++ SFML
答えて
#include <SFML\Graphics.hpp>
std::map<std::string, sf::Sprite> sprites;
void addSprite(std::string sprite_name, sf::Texture sprite_texture) {
sf::Sprite sprite;
sprite.setTexture(sprite_texture);
sprites[sprite_name] = sprite;
}
sf::Sprite getSprite(std::string sprite_name) {
return sprites[sprite_name];
}
std::vector<sf::Sprite> getSprites() {
std::vector<sf::Sprite> sprites_c2;
for each (sf::Sprite sprite in sprites.value_comp) {
sprites_c2.emplace_back(sprite);
}
return sprites_c2;
}
次回は元の投稿を編集したい場合があります。このセクションはあなたの質問に答えようとしている人のためのものです。 – pie3636
for each
は有効ではありません。 C++ 11で始まる、正しい式はここで for (<type> <variable> : <collection>)
で、あなたも関数であり、ここでは意味を成さない、sprites.value_comp
て要素のコレクションにアクセスしようとしています。
std::set
コンテナがsprites
をされると仮定すると、あなたはそれの上にこのよう反復することができます:あなたが代わりにstd::map
を使用している場合は、
for (auto sprite : sprites) {
// sprite is the value you're looking for
}
を同じループを使用しますが、sprite
があなたのsf::Sprite
が、そのキーは含まれません、スプライトにアクセスするにはsprite.second
を使用する必要があります。
auto
キーワードを使用すると、コンパイラは変数の型を判別できます。あなただけの変換しようとしている場合は
// Replace "keyType" with the type of the keys, such as int or std::string
std::map<keyType, sf::Sprite>::iterator it; for (it = sprites.begin(); it != sprites.end(); ++it)
{
// Access each sprite using it->second
}
:std::map
で
std::set<sf::Sprite>::iterator it;
for (it = sprites.begin(); it != sprites.end(); ++it)
{
// Access each sprite using *it (the star is necessary here)
}
:あなたのコンパイラがC++ 11をサポートしていない場合は
、あなたの代わりにこのような何かをする必要があります。あなたのstd::set
をstd::vector
に変換することができますが、簡単な方法があります:
std::map
の場合、単一行バージョンはありませんので、上記のようにループを繰り返す必要があります。
ありがとうございます。 –
'std :: set'を' std :: vector'に変換しようとしていると仮定すれば、もっと簡単な方法があります:空のベクトルを作成し、 'std :: copy(sprites.begin ()、sprites.end()、std :: back_inserter(sprites_c2)); ' – pie3636
- 1. C++ SFMLのテクスチャとスプライト(ホワイトボックス)
- 2. スプライトのベクトルからの描画SFML
- 3. SFMLスプライトstd ::リスト
- 4. SFMLスプライトの動き
- 5. SFMLのドラッグ可能なスプライト
- 6. SFMLスプライト白い四角
- 7. SFMLでスプライトが動かない
- 8. SFML/C++スプライトが特定のポイントの後で消える
- 9. SFMLは、私が最近SFMLで作業を開始したスプライト
- 10. スプライト保存位置、sfml。 Battlesgips game
- 11. SFMLスプライトが表示されない
- 12. データベースからすべてのレコードを返すVisual C#Datagrid
- 13. SFML - RenderWindowランタイムエラーがすべての場合
- 14. SFMLでスプライトとテクスチャを使用して継承を試みる
- 15. C++ SFML
- 16. C++ SFML - SFMLの2つのキーを同時に押す方法
- 17. スプライトの実際の位置を取得してC++とsfmlで印刷する方法
- 18. Googleマップからすべてのマーカーを削除する方法mapview.clear(ios objective-c)
- 19. SFML 2.4.2 SFMLの2015ビルドを使用するVisual C++ 2017用
- 20. 関数からのリソースのロードに関する問題C++/SFML
- 21. C++ sfml mp3ミュージックプレーヤーエラー
- 22. C++ OpenGL SFML
- 23. sfmlスプライトのリストを作成し、forループを使用してそれらを「ソリッド」にする方法
- 24. setInからマップを返す - ImmutableJS
- 25. Spring - マップからJSONを返します
- 26. SFMLのスプライトで表示されない画像
- 27. マップからすべての値を取得する
- 28. SFML networking and me(C++)
- 29. SFML C++ Dodge Game Unresponsive
- 30. SFML in winform(C++/Cli)
あなたは私に間違っていることを教えてもらえますか?[これ](http://stackoverflow.com/questions/110157/how-to-retrieve-all-keys-or-values-from-a-stdmap)見てください。 – pie3636
私のコードで? –
マップ内のスプライトの比較関数であるsprites.comp_valueを反復していますが、この文脈では意味をなさないものです。私は試してみることをお勧めします: 'for(auto sprite:sprites)'はキーを反復処理します。 'sprite.second'を使って値にアクセスすることができます。これは、STLマップコンテナを使用していることを前提としています。 – pie3636