Static template et fiasco d'initialisation
Bonjour,
J'ai une classe template qui possède une variable static :
Code:
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;
}; |
et j'ai différente classe qui hérite de celle-ci :
Code:
1 2 3
| class Tile : public ConstructableBase<Tile> { };
template <typename T> std::string ConstructableBase<T>::_type = "tile"; |
Du coup je défini une fois ma variable static pour chaque implémentation.
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 !