Bonjour/bonsoir, c'est encore moi
Je viens car j'ai (encore) un problème. J'ai trois classes: Scene, GuiScreen et GuiTest. GuiTest hérite de GuiScreen.
Scene.h
Scene.cpp
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 #ifndef DEF_SCENE #define DEF_SCENE #include "Engine.h" #include "GuiTest.h" class Scene { public: Scene(); ~Scene(); void Draw(); void Update(); protected: GuiTest m_guiTest; ///C'est ici que ca plante }; #endif
GuiTest.h
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 #include "Scene.h" Scene::Scene() { } Scene::~Scene() { } void Scene::Draw() { } void Scene::Update() { }
GuiTest.cpp
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 #ifndef DEF_GUITEST #define DEF_GUITEST #include "Gui.h" #include "GuiScreen.h" #include "GuiScreen.h" #include "GuiButton.h" #include <iostream> class GuiTest : public GuiScreen { public: GuiTest(); ~GuiTest(); void Update(); }; #endif
GuiScreen.h
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 #include "GuiTest.h" GuiTest::GuiTest() { std::cout<<"GuiTest()"<<std::endl; addGui(new GuiButton(10, 10, 70, 20, "test1")); addGui(new GuiButton(10, 40, 70, 20, "test2")); } GuiTest::~GuiTest() { delete m_guiList[0]; } void GuiTest::Update() { std::cout<<"GuiTest is updating"<<std::endl; if(m_guiList[0]->isClicked()) { std::cout<<"button is clicked"<<std::endl; } }
GuiScreen.cpp
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 #ifndef DEF_GUISCREEN #define DEF_GUISCREEN #include <vector> #include "Gui.h" class GuiScreen : public Gui { protected: std::vector<Gui*> m_guiList; public: GuiScreen(); void swap(GuiScreen &guiScreen); GuiScreen(int x, int y, int height, int width); ~GuiScreen(); virtual void Update(); void addGui(Gui* gui); int getGuiListSize(); Gui* getGui(int index); }; #endif
Lorsque, a la ligne 20 de mon scene.h, je veut créer un GuiTest le programme plante. Quelqu'un a t'il une idée? Ne faite pas attention au std::cout c'etait juste pour "debugger" a l'artisanal étant donné que le call stack de code::block me donne des informations pas très explicites.
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
40
41
42
43
44
45
46 #include "guiscreen.h" using namespace std; using namespace sf; GuiScreen::GuiScreen() : m_guiList(0) { } GuiScreen::GuiScreen(int x, int y, int height, int width): Gui(x, y, height, width), m_guiList(0) { } GuiScreen::~GuiScreen() { for(int i(0); i<m_guiList.size(); ++i) { delete m_guiList[i]; } } void GuiScreen::Update() { } void GuiScreen::addGui(Gui* gui) { m_guiList.push_back(gui); } int GuiScreen::getGuiListSize() { return m_guiList.size(); } Gui* GuiScreen::getGui(int index) { return m_guiList[index]; }
PS: Lorsque je créer un GuiTest dans main.c par exemple tout fonctionne bien.
Merci d'avoir (encore) lu mon pavé, j’espère que j'ai rien oublier et que mon message est compréhensible malgré les fautes d'orthographe.
Partager