No, as I said, you have to draw everything between the window.clear() and window.display(). If you implement a draw function in your classes where you pass it the render window, then draw all of the class' sprites (just window.draw(), no window.clear() or window.display()). Then your draw calls could just look like:
m_render_window->clear();
m_render_window->draw(background_sprite);
m_render_window->draw(sprite);
main_menu.draw(m_render_window);
m_render_window->display();