Dibujar en SFML fuera de la function principal (pasar la window a otras funciones) no funciona

¿Por qué Sprite dibujado solo aparece en la window cuando se extrae de la function principal, pero no cuando se extrae de una function externa y cómo puedo cambiar esto?

class Class { private: sf::Sprite sprite; public: Class() { sprite = initializeSprite(sprite); } }; void Class::draw(sf::RenderWindow& win) { win.draw(sprite); } int main(int argc, char* argv[]) { sf::RenderWindow window(sf::VideoMode(1920,1080), "Window"); Class instance; while(window.isOpen()) { window.clear(); instance.draw(window); window.display(); } return 0; } 

-> No funciona.

 int main(int argc, char* argv[]) { sf::RenderWindow window(sf::VideoMode(1920,1080), "Window"); sf::Sprite sprite; sprite = initializeSprite(sprite); Class instance; while(window.isOpen()) { window.clear(); window.draw(sprite); window.display(); } return 0; } 

-> Funciona.

Estoy usando SFML-2.4.0. Tampoco funciona cuando uso un puntero en lugar de una reference. ¿Qué pasa aquí?

Probé tu código y funciona muy bien. ¿Cómo inicializaste tu Sprite? Una posible razón por la que no funciona es que su image no está cargada correctamente o su sprite es "pequeño" (eso sucede si solo dice que el color debe ser rojo, no hay información sobre el tamaño, por lo que es 0x0 píxeles).

Aquí está el código que probé (Copiar + Pegar + Corregir todos los errores formales):

 #include <SFML/Graphics.hpp> using namespace std; class Class { private: sf::Sprite sprite; sf::Texture texture; public: Class() { // Loading my test-image (128x128 px) texture.loadFromFile("player.png"); sprite.setTexture(texture); } void draw(sf::RenderWindow& win) { win.draw(sprite); } }; int main(int argc, char* argv[]) { sf::RenderWindow window(sf::VideoMode(640, 480), "Window"); Class instance; while (window.isOpen()) { sf::Event mEvent; if (window.pollEvent(mEvent)) if (mEvent.type == sf::Event::Closed) window.close(); window.clear(); instance.draw(window); window.display(); } return 0; }