Bonsoir,
dans un programme utilisant un classe héritant de sf::RenderWindow. Ne voulant pas charger 15 fois la même texture en mémoire, j'aimerai avoir un mécanisme permettant de vérifier la présence de la-dite texture et d'agir en conséquence. Utilisant un std::vector pour mes textures, je voulais utiliser directement une fonctionnalité de la STL. Par contre, pour une raison ou une autre, le compilateur ne semble pas aimer la ligne suivante:
std::vector<sf::Texture>::iterator it = std::find(movTex.begin(), movTex.end(), tex);
Il semblerait qu'il y a un problème de comparaison entre un sf::Texture et un const sf::Texture.
Le code se trouve dans une fonction permettant d'ajouter un sprite à partir de l'emplacement d'une image.
void MaClasse::ajouterSprite (std::string &source)
{
sf::Texture tex;
tex.loadFromFile(source);
std::vector<sf::Texture>::iterator it = std::find(TexVector.begin(), TexVector.end(), tex);
if (it == TexVector.end())
{
TexVector.push_back(sf::Texture());
TexVector.back().loadFromFile(source);
SpriteVector.push_back(sf::Sprite(TexVector.back()));
}
else
{
SpriteVector.push_back(sf::Sprite(*it));
}
}
TexVector est un std::vector<sf::Texture>, SpriteVector un std::vector<sf::Sprite>
Quelqu'un verrait-il l'erreur?
Merci d'avance