J'ai une autre question, ou plutôt un problème ...
Je souhaiterai clarifier le ScreenManager, donc j'aimerai faire une classe ScreenManager contenant ces fonctions :
#ifndef SCREENMANAGER_H
#define SCREENMANAGER_H
#include <SFML/Graphics.hpp>
#include <iostream>
#include "CScreen.h"
#include "screen_0.h"
#include "screen_1.h"
#include "screen_2.h"
class ScreenManager
{
public:
ScreenManager();
void Init();
void Update(sf::RenderWindow &App);
private:
std::vector<CScreen*> Screens;
int screen = 0;
};
#endif // SCREENMANAGER_H
#include "ScreenManager.h"
ScreenManager::ScreenManager()
{
}
void ScreenManager::Init()
{
screen_0 s0;
Screens.push_back(&s0);
screen_1 s1;
Screens.push_back(&s1);
screen_2 s2;
Screens.push_back(&s2);
}
void ScreenManager::Update(sf::RenderWindow &App)
{
while (screen >= 0)
{
screen = Screens[screen]->Run(App);
}
}
Et puis dans le main faire :
#include <iostream>
#include <SFML/Graphics.hpp>
#include "ScreenManager.h"
int main(int argc, char** argv)
{
sf::RenderWindow App(sf::VideoMode(640, 480), "SFML Demo 3");
App.setFramerateLimit(60);
ScreenManager test;
test.Init();
test.Update(App);
while (App.isOpen())
{
sf::Event event;
while (App.pollEvent(event))
{
if (event.type == sf::Event::Closed)
return(-1);
}
App.clear(sf::Color(0, 0, 0, 0));
App.display();
}
return 0;
}
Sauf que voilà mon application plante et d'après le debugguer cela vient de ma fonction Update et donc je pense à un soucis de pointeur, mais là je reconnais que je suis totalement perdu sur l'utilisation des pointeurs à partir de CScreen, je ne sais donc comment régler le problème ...