Bonjour,
J'ai une classe template qui possède une variable static :
et j'ai différente classe qui hérite de celle-ci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 template <typename T> class ConstructableBase { public: static T* get(std::string const& name) { std::cout << _type << std::endl; return //autre chose pas important } protected: static std::string _type; };
Du coup je défini une fois ma variable static pour chaque implémentation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 class Tile : public ConstructableBase<Tile> { }; template <typename T> std::string ConstructableBase<T>::_type = "tile";
Le problème c'est, est-ce que ça ne va pas posé un problème avec l'initialisation des variables ?
Ps:
J'avais pensé à une approche pour résoudre ce problème qui consisté à mettre dans la classe Base une méthode virtuelle pure qui serait implémenté par chaque classe, sauf que dans ma méthode static j'aurais eu besoin de créer un objet pour ensuite appelé la méthode dessus.
Du coup j'aimerais savoir :
- Est-ce que le premier problème en est bien un et si oui comment le résoudre
- Quelle méthode est la meilleure
Merci de votre aide !
Partager