Hello,
I have a strange error when I try to return a RenderWindow reference from a singleton class:
Error C2280 'sf::RenderWindow::RenderWindow(const sf::RenderWindow &)': attempting to reference a deleted function.
Minimal code :
#include <SFML\Graphics.hpp>
class RenderManager
{
public:
RenderManager();
static RenderManager & rm();
sf::RenderWindow & getWindow();
private:
sf::RenderWindow window;
};
RenderManager::RenderManager()
{
window.create(sf::VideoMode(800, 600), "Realms of Dream");
tileSet.loadFromFile("gfx/tileset.png");
}
RenderManager & RenderManager::rm()
{
static RenderManager rm;
return rm;
}
sf::RenderWindow & RenderManager::getWindow()
{
return window;
}
Thanks.
This is a minimal code that show the error:
#include <SFML\Graphics.hpp>
class RenderManager
{
public:
RenderManager();
static RenderManager & rm();
sf::RenderWindow & getWindow();
private:
sf::RenderWindow window;
};
RenderManager::RenderManager()
{
window.create(sf::VideoMode(800, 600), "Realms of Dream");
}
RenderManager & RenderManager::rm()
{
static RenderManager rm;
return rm;
}
sf::RenderWindow & RenderManager::getWindow()
{
return window;
}
int main()
{
sf::RenderWindow window = RenderManager::rm().getWindow();
return 0;
}
sf::RenderWindow window = RenderManager::rm().getWindow();
This is copying the RenderWindow from rm to the newly constructed window.
EDIT: If you are storing the windows in the manager and accessing them, don't copy them, reference them by creating a reference instead.
i.e.
sf::RenderWindow& window = RenderManager::rm().getWindow();