Ainsi est ici le problème simplifié, supposons que nous avons deux typesComment avoir différentes la mise en œuvre d'une fonction de classe modèle basé sur le type d'un membre spécifique du type paramétrées
struct Shape2D
{
Vec2 Position;
};
struct Shape3D
{
Vec3 Position;
};
Je veux créer un modèle test de classe
template<class T>
class Test
{
public:
int method1()
{
//return 1 if member T::Position is Vec2,
//return 2 if member T::Position is Vec3
}
}
tels que le code suivant fonctionne
Test<A> ta;
Test<B> tb;
assert(ta.method1() == 1);
assert(tb.method1() == 2);
le vrai Le contexte de ce problème concerne un moteur OpenGL. Je veux pouvoir utiliser la même classe de sérialisation pour les données de sommets 2D et 3D sans avoir à écrire une version 3D et 2D.
Le problème lié au polymorphisme plutôt que des modèles. Ne sera-t-il pas possible de dériver shape3d et shape2d à partir de formes? –
Tout dépend de ce que vous souhaitez réaliser ici. Voulez-vous juste tester si vous avez créé la bonne classe? –
Hum, bien. J'ai tellement essayé de rendre le problème aussi simple que possible qui a fini par être très différent de celui que j'ai vraiment. Pour le problème en main, la surcharge est la meilleure solution. – alcoforado