Bonjour

J'ai créée une classe Wall qui contient un vecteur de vecteur d'objet "Brick" et une methode getConstWall() qui me retourne la référence du vecteur:

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
20
Wall::Wall(int numberW, int numberH, string path, int brickWidth, int brickHeight)
{
  for(int i=0; i < numberH; i++)
  {
    wall.push_back(vector<Brick>());
 
    for(int j=0; j < 1; j++)
    {
      wall.front().push_back
      (
        Brick(path, (brickWidth*j) + (brickWidth/2) , (brickHeight*i) + brickHeight/2, brickWidth, brickHeight)
      );
    }
  }
}
 
const vector<vector<Brick> >& Wall::getConstWall() const
{
  return wall;
}
Dans une autre classe je fais un appel à cette méthode pour récupérer un itérateur dessus:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
  cout << "==== Debut ===" << endl;
  vector< vector<Brick> >::iterator itV = ((vector< vector<Brick> >)game.getConstBoard().getConstWall().getConstWall()).begin();
  cout << "=== Fin ===" << endl;
Or j'observe qu'a chaque appel de l'itérateur j'ai de multiples appels aux destructeurs des bricks (J'ai fait un print dans chaque destructeurs):

Je ne comprend pas pourquoi l'appel à la methode bgin provoque une recopie de mes objets? Je pourrais bien sur initialiser dynamiquement mes Briques mais je me demande si il n'y à pas une autre solution?

Merci d'avance de vos réponses.