Bonjour,
Je souhaite r�aliser une classe permettant de g�rer le chargement des ressource sons et images avec sfml. Le chargement �tant identique au type pr�t (sf::Image ou sf::SoundBuffer) entre les deux, j'ai d�cid� de cr�er une classe template singleton qui charge et conserve les m�dias en m�moire. L'objectif est donc de pouvoir charger des m�dias de la mani�re suivante :
Pour r�aliser cette classe, je m'y suis pris de la mani�re suivante :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 MediaManager<sf::SoundBuffer>::getInstance()->getMedia("chemin vers le son"); MediaManager<sf::Image>::getInstance()->getMedia("chemin vers l'image");
MediaManager.hpp :
Avec simplement la cr�ation de la classe sous forme de singleton, je me retrouve avec une erreur de link sur getinstance() :
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 #include <SFML/Audio.hpp> #include <iostream> #include <map> template<class T> class MediaManager { public: static MediaManager<T>* getInstance() { if (NULL == _singleton) { std::cout << "DEBUG: MediaManager | Creation du singleton." << std::endl; _singleton = new MediaManager<T>; } return _singleton; } private: static MediaManager<T>* _singleton; //Pointeur du singleton MediaManager(); }; template<class T> MediaManager<T>* MediaManager<T>::_singleton = NULL;
Je ne vois pas ce que je fais de mal ici, une id�e pour me guider ?Erreur 2 error LNK2019: symbole externe non r�solu "private: __thiscall MediaManager<class sf::SoundBuffer>::MediaManager<class sf::SoundBuffer>(void)" (??0?$MediaManager@VSoundBuffer@sf@@@@AAE@XZ) r�f�renc� dans la fonction "public: static class MediaManager<class sf::SoundBuffer> * __cdecl MediaManager<class sf::SoundBuffer>::getInstance(void)" (?getInstance@?$MediaManager@VSoundBuffer@sf@@@@SAPAV1@XZ)
Partager