Bonjour à vous,
Alors voilà j'ai un petit problème et à vrai dire, la gestion de la mémoire ce n'est pas mon fort, voilà mon code :
Dans map.h :
et map.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class Map { public: Map(sf::RenderWindow &); sf::RenderWindow &appeuh; void afficher(); private: std::vector< std::vector< int > > fixed_items; std::vector< std::vector< int > > destructible_items; std::vector<Item*> brique_tableau; };
et dans mon main :
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 Map::Map(sf::RenderWindow &app) : appeuh(app) { std::vector< std::vector< int > > fixed_items(10,std::vector<int> (10, 0)); std::vector< std::vector< int > > destructible_items(10,std::vector<int> (10, 0)); int i, j; for(i = 0; i < 9; i++) { fixed_items.at(0).at(i) = 1; fixed_items.at(i).at(0) = 1; fixed_items.at(9).at(i) = 1; fixed_items.at(i).at(9) = 1; } for(i = 0; i <= 9; ++i) { for(j = 0; j <= 9; ++j) { std::cout << fixed_items.at(i).at(j) << " | "; } std::cout << std::endl; } std::cout << "taille : " << fixed_items.size() << std::endl; } void Map::afficher() { // la est le problème : ça m'affiche 0.. std::cout << "taille : " << fixed_items.size() << std::endl; int i, j; for(i = 0; i < 9; ++i) { for(j = 0; j < 9; ++j) { std::cout << fixed_items.at(i).at(j) << " | "; } std::cout << std::endl; } }
Mon problème est le suivant, lorsque je scrute mon debugger (j'utilise XCode), je vois qu'après le passage du constructeur, mon vector se vide et passe à "out of scope"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Map maMap = Map(App); maMap.afficher();
Depuis 2h environ je suis là dessus et je bloque, j'ai vu qu'il fallait peut-être utiliser std::copy mais je ne vois pas trop pourquoi un attribut d'une instance de ma classe se viderais oO
si vous avez une piste je suis preneur ;-)
merci d'avance
Partager