Crash a la création d'un attribut
Bonjour/bonsoir, c'est encore moi :oops:
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:
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:
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:
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:
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:
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:
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.