Bonjour,
J'essaye d'impl�menter pour la premi�re fois le design pattern factory en C++.
J'ai donc une classe Object d�fini comme suit :
Et une classe Tile qui en h�rite :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6 class Object { public: virtual Object* clone() = 0; };
(Pour l'instant je n'ai que celle l� mais � l'avenir d'autres viendrons s'ajouter)
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6 class Tile : public Object { public: Tile(); getId(); Object* clone(); };
Enfin voici ma classe objectfactory qui est d'ailleurs un singleton :
Le probl�me viens que je peut �crire ce code :
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 class ObjectFactory : Singleton<ObjectFactory> { friend class Singleton<ObjectFactory>; private: ObjectFactory(); ~ObjectFactory(); public: void add(std::string const& key, Object* obj) { _mapFactory[key] = obj; } Object* construct(std::string const& key) { Object* tmp = 0; tmp = _mapFactory.at(key)->clone(); return tmp; } private: std::map<std::string, Object*> _mapFactory; };
Mais apr�s je ne peux rien faire faire avec mon objet t. Je ne peux pas acc�der aux m�thodes de Tile. Je ne peux par exemple par �crire :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 ObjectFactory* obj = Singleton<ObjectFactory>::instance(); obj->add("Tile", new Tile); Object* t = obj->construct("Tile");
Comment r�soudre ce probl�me ? Merci de votre aide !
Code : S�lectionner tout - Visualiser dans une fen�tre � part t->getId()
Partager