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
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
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
#include "Scene.h"
 
Scene::Scene()
{
 
}
 
Scene::~Scene()
{
 
}
 
void Scene::Draw()
{
 
}
 
void Scene::Update()
{
 
}
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
#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
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
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.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
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
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
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];
}
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.
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.