Méthode virtuelle template
Bonjour,
j'ai un problème de conception, j'ai une classe de base qui gère les ressources défini comme suit :
Code:
1 2 3 4 5
| class RessourceManagerBase {
public:
virtual ~RessourceManagerBase() { }
virtual void construct(nlohmann::json& json) = 0;
}; |
Puis vient cette classe template :
Code:
1 2 3 4 5 6 7 8 9 10 11
| template <typename T> class RessourceManager : public RessourceManagerBase {
public:
void construct(nlohmann::json& json) { }
std::map<std::string, T*>& getList() const {
return _object;
}
private:
std::map<std::string, T*> _object;
}; |
Afin d'être utilisé dans le code comme suit :
Code:
1 2
| std::map<std::string, RessourceManagerBase*> _manager;
_manager["tile"] = new RessourceManager<Tile>(); |
Jusque là aucun soucis. Le problème c'est comment est-ce que je peut récupérer les objets contenus dans _object.
Je voulais écrire ça :
Code:
std::map<std::string, Tile*> t = _manager["tile"]->getList()
Mais vu que _manager stock des string et des RessourceManagerBase* ça ne peut pas fonctionner.
Je ne peut pas mettre ma fonction en virtuel dans la classe RessourceManagerBase puisque elle retourne un template...
Du coup je ne sais vraiment pas comment faire, merci de votre aide.