Bonjour à tous,
Actuellement en plein développement d'un projet de Bomberman, je me trouve confronté à un étrange problème. Ma classe "Player" doit posséder un certain nombre de bombes (qui sont représentées par une classe Bomb) ; j'ai choisi de créer un attribut de type vector contenant des pointeurs vers des objets bombe.
Pourquoi un vector de pointeurs ? Car ma classe "Bomb" dérive de sf::Thread (pour gérer la minuterie de la bombe), et ne peut donc pas être "copiée" dans un vecteur classique. Seulement, il se trouve que ce vecteur de pointeurs présentait des fuites mémoires (étant donné que les objets alloués n'étaient pas désalloués lors du pop_back). N'ayant pas réussi à faire ceci, j'ai essayé avec un vecteur de shared_ptr contenant chacun un objet de type bombe... Et bien ça compile, mais j'ai l'erreur suivante lorsque je veux poser une bombe : "An internal OpenAL call failed in sound.cpp (100) : AL_INVALID_NAME, an unaccept name has been specified"
Auriez-vous une idée pour résoudre mon problème svp ?
Voici la partie de mon code qui nous intéresse :
std::vector<boost::shared_ptr<Bomb> > m_bombs;
1 2 3 4 5 6 7 8 9 10
| void Player::addBomb() {
m_bombs.push_back(boost::shared_ptr<Bomb> (new Bomb));
}
void Player::delBomb() {
if ( !m_bombs.empty() ) {
m_bombs.pop_back();
}
} |
Merci d'avance
Partager