Bonjour, j'ai un problème d'utilisation de vecteurs dans le cadre d'un petit jeu de casse brique.

Pour résumer, le jeu contient une classe abstraite Object, sur laquelle dérivent 3 autres classes. Une classe Player, Ball et Brick.

Ces 3 classes sont gérées par une classe ObjectManager qui contient un vecteur qui pointe sur tous les objets de la scène.

La classe ObjectManager :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class ObjectManager
{
private:
    std::vector<Object *> list;
public:
    ~ObjectManager();
    void addObject(Object*);
    Object* getObject(int i) { return list[i]; }
    int getSize() { return list.size(); }
};
ObjectManager::~ObjectManager()
{
    while (!list.empty())
        list.pop_back();
}
void ObjectManager::addObject(Object *t_object)
{
    list.push_back(t_object);
}
La déclaration des objets et l'ajout des objets dans ObjectManager :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    // Quelque part dans le main ...
    // Déclaration des Objets de la scène. ->Objets(int position_x, int position_y)
    Player player(240, 460); // le player s'affiche en bleu
    Brick bricktest(50, 50); // Brique s'affiche en rouge
    Ball ball(320, 430);     // La balle s'affiche en rouge
 
    std::vector<Brick> bricklist; // Toutes les briques sont dans un vecteurs
    for (int i = 10; i < 620; i += 25)
        for (int j = 10; j < 300; j += 15)
            bricklist.push_back(Brick(i, j));
 
    // Ajout des objets précédents 
    objectmanager.addObject(&ball);
    objectmanager.addObject(&bricktest);
    objectmanager.addObject(&player);
 
    for (int i = 0; i < bricklist.size(); i++)
        objectmanager.addObject(&bricklist[i]); //<--- PAS BON, mais fonctionne ...
        // De plus les briques s'affichent en bleue, c'est la couleur de l'objet précédents soit player...
Je soupçonne la dernière ligne d'être la cause de tout ça.

Ce code compile, pas d'erreur avec MinGW, mais lors de l'affichage des briques, elles ne sont pas de la bonne couleur -> toutes les briques qui étaient dans le vecteur sont bleues, alors que la brique déclarée normallement est rouge (la couleur étant générée dans le constructeur), et ça rame bien.

Voilà, donc je pense qu'il y a un gros problèmes dans la mémoire, mais je n'arrive pas a le régler. Surement une mauvaise utilisation du vecteur pour faire passé l'adresse dans la dernière ligne.

Merci d'avance d'avoir lu !

EDIT : Aïe, je me suis trompé de section, si un admin passe par ici, pourrait-il le déplacer dans la section SL & STL, merci.