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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
class Object {
 
public:
	virtual Object* clone() = 0;
};
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 Tile : public Object {
public:
	Tile();
        getId();
	Object* clone();
};
(Pour l'instant je n'ai que celle là mais à l'avenir d'autres viendrons s'ajouter)

Enfin voici ma classe objectfactory qui est d'ailleurs un singleton :
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;
};
Le problème viens que je peut écrire ce code :
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");
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 :
Comment résoudre ce problème ? Merci de votre aide !