Bonjour,
Le tuto n'offre pas de solutions pour réaliser des singletons en passant par des smart pointer.
Comment peut-on s'y prendre?
Actuellement mes tests donne:
.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 class Ressources_Manager : boost::noncopyable{ public: static boost::shared_ptr<Ressources_Manager> Instance(); virtual ~Ressources_Manager(); private: // boost::shared_ptr<Ressources_Manager> operator= (const boost::shared_ptr<Ressources_Manager>){} Ressources_Manager(); Ressources_Manager (const Ressources_Manager&); static boost::weak_ptr<Ressources_Manager> m_instance; sf::Texture H_Sp_Prairie; sf::Image Img_H_Prairie; void Load_Textures(); void Load_Images(); };
.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 boost::shared_ptr<Ressources_Manager> Ressources_Manager_ptr = Ressources_Manager::Instance(); // Ressources_Manager Ressources_Manager::m_instance=Ressources_Manager(); Ressources_Manager::Ressources_Manager() { Load_Images(); Load_Textures(); } Ressources_Manager::~Ressources_Manager() { } boost::shared_ptr<Ressources_Manager> Ressources_Manager::Instance() { boost::shared_ptr<Ressources_Manager> instance = m_instance.lock(); if (!instance) { instance.reset(new Ressources_Manager()); m_instance = instance; } return instance; } void Ressources_Manager::Load_Images() { Img_H_Prairie.loadFromFile("Image/HexaTestSize.bmp"); Img_H_Prairie.createMaskFromColor(sf::Color(255,255,255)); } void Ressources_Manager::Load_Textures() { H_Sp_Prairie.loadFromImage(Img_H_Prairie); }
Erreur affichée:
../RessourcesManager.cpp:29: undefined reference to `itpro::ress::Ressources_Manager::m_instance'
Partager