SFML community forums

Help => General => Topic started by: fgn_j on May 29, 2019, 04:51:46 am

Title: Program immediately exiting with 0
Post by: fgn_j on May 29, 2019, 04:51:46 am
Hi guys. This is probably a silly question, but I searched and couldn't find anything about it.

So I've been working on a basic game and suddenly it's started exiting with 0 imediately after starting. I did some digging with GDB and the event handler seems to be the culprit.

my Game class contains the bulk of the code

Game.h
class Game
{
    //state/level getters/setters, etc

    static sf::RenderWindow* window;
    static sf::Event event;
    static void run();
}
 

main.cpp
int main()
{
    Game();

    Game::run();

    return 0;
}
 

Game.cpp
void Game::run()
{
    while (Game::window->pollEvent(Game::event)) {
        if (Game::event.type == sf::Event::Closed)
            Game::window->close();

        window->clear(sf::Color::White);

        //state machine stuff

        Game::window->display();
    }
}
 

One frame of game logic happens, and then the event says that the window was closed, causing the program to "successfully" exit with 0.

The Game class has mostly static members, so that things can easily interact with each other. If this is bad practice, please let me know, as I'm very new to C++. :)

I'm on Windows 10, using Code::Blocks 17.12, and SFML is dynamically linked, if that matters.

Any reason as to why this is happening?
Title: Re: Program immediately exiting with 0
Post by: G. on May 29, 2019, 05:58:27 am
You don't have a basic main loop to keep the window open, you only have an event loop.

Take a look at the basic code example in the tutorial: https://www.sfml-dev.org/tutorials/2.5/start-cb.php
Title: Re: Program immediately exiting with 0
Post by: fgn_j on May 29, 2019, 06:12:51 am
You don't have a basic main loop to keep the window open, you only have an event loop.

Take a look at the basic code example in the tutorial: https://www.sfml-dev.org/tutorials/2.5/start-cb.php

Geez...I knew it had to be something simple  ::)

Thank you.