You should be doing that every single frame in your main game loop anyway with clear/draw/display, if you follow any of the basic examples in the SFML tutorials.
int main() {
sf::Window window(sf::VideoMode(800, 600), "My window");
// set up some drawables
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
window.close();
}
window.clear();
window.draw(/* stuff */);
window.display();
}
return 0;
}
Adding a state enum to this is trivial:
enum GameState {Menu, Game};
int main() {
GameState gameState = GameState::Menu;
sf::Window window(sf::VideoMode(800, 600), "My window");
// set up some menu drawables
// set up some game drawables
while (window.isOpen()) {
sf::Event event;
while (window.pollEvent(event)) {
if (event.type == sf::Event::Closed)
window.close();
// if some other event, change gameState
}
window.clear();
switch(gameState) {
case GameState::Menu:
window.draw(/* menu stuff */);
break;
case GameState::Game:
window.draw(/* game stuff */);
break;
}
window.display();
}
return 0;
}