目前我遇到了我的代碼問題。我嘗試了一切。 image is here 我希望有人能幫助我:)。順便說一句我是新來的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++;首先是C++ 11,正確的表達是 for (<type> <variable> : <collection>)
在這裏,你也試圖通過sprites.value_comp
訪問元素的集合,這是一個功能,沒有意義在這裏。
假設sprites
是std::set
容器,你可以迭代它是這樣的:如果你使用的是std::map
代替
for (auto sprite : sprites) {
// sprite is the value you're looking for
}
,使用相同的循環,但sprite
不會包含您的sf::Sprite
但它的關鍵,您將需要使用sprite.second
來訪問精靈。
請注意,auto
關鍵字可讓編譯器確定變量的類型。
如果你的編譯器不支持C++ 11,你需要做這樣的事情,而不是:
std::set<sf::Sprite>::iterator it;
for (it = sprites.begin(); it != sprites.end(); ++it)
{
// Access each sprite using *it (the star is necessary here)
}
隨着std::map
:
// 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::set
轉化爲std::vector
,但是,有更簡單的方法可以做到這一點:
std::vector <sf::Sprite> sprites_c2;
std::copy(sprites.begin(), sprites.end(), std::back_inserter(sprites_c2));
對於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 2.1如何讓一個精靈面對另一個精靈
- 4. SFML中的可拖動精靈
- 5. 如何動畫所有精靈圖片?
- 6. 從紋理地圖集創建精靈
- 7. C++從矢量中的類返回精靈對象
- 8. Phaser精靈地圖定位
- 9. 試圖使用SFML中的精靈和紋理繼承
- 10. css精靈或圖像地圖?
- 11. 如何返回地圖中所有鍵的所有地址值
- 12. 如何讓精靈從精靈表變成另一個精靈?
- 13. 從精靈表
- 14. XNA捕捉精靈到瓷磚地圖
- 15. 使用gdk_pixbuf_composite()的精靈地圖問題
- 16. 在瓷磚地圖上繪製精靈
- 17. Cocos2d平鋪地圖添加精靈
- 18. 指南針精靈地圖變量名?
- 19. CSS圖像精靈
- 20. CSS圖像精靈
- 21. 如何一次移動所有的精靈:Cocos2dx v3 C++
- 22. 如何獲得精靈的實際位置並以C++和sfml格式打印
- 23. SFML 2.0使精靈循環顯示不止一次
- 24. 如何在SFML中爲精靈創建動畫
- 25. 在SFML使用字體精靈表的字體2.4
- 26. sfml - vector [0] .getPosition()返回0
- 27. SFML rendertexture不返回紋理
- 28. 無法刪除精靈容器的所有圖像
- 29. 從CCSpriteBatchNode更改精靈貼圖
- 30. 從精靈圖像生成動畫?
Give [this](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