Hopefully the code below makes it clearer - in the "isOpen()" loop inside MainMenu::Run() I want to be able to keep the background sprite in the window (i.e. know it exists and redraw it).
// INSIDE MAIN
// Create background sprite
sf::Sprite background_sprite // Plus other code to set up and attach a texture and scale it correctly...
render_window.draw(background_sprite);
// Run main menu - passing the address of the render window so main menu can draw to it
MainMenu main_menu(&render_window);
main_menu.Run();
// INSIDE MAINMENU::RUN()
// Create another sprite
sf::Sprite main_menu_sprite = ......
sf::Event event;
while(m_render_window->isOpen()){
while(m_render_window->PollEvent(event)){
// Code to poll events (just close window currently)
}
m_render_window->clear();
m_render_window->draw(sprite);
// Somehow know about and redraw background_sprite
m_render_window->display();
}