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:
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
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; }
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):
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;
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.
Partager