Visual Studio borks lorsque j'essaie de créer un std :: map avec le type de valeur étant un pointeur vers template-functor. Est-ce que je fais quelque chose d'illégal ici?Pourquoi Map avec un pointeur sur le foncteur de modèle comme valeur_type ne fonctionne-t-il pas?
// Functor prototype
template< class T, class evenT>
class FunctionHandler {};
// std::Map definition
template <class T, class evenT>
map<int, FunctionHandler<T, evenT>* > lookup;
Quelqu'un peut-il s'il vous plaît me dire si cela est une erreur (et pourquoi est-ce mal) ou est-ce juste Visual Studio?
Je ne sais pas si je comprends tout à fait le terme « modèle variable » . Quand T et evenT sont définis, FunctionHandler * représenterait un type concret ... alors ça devrait marcher alors? – brainydexter
"modèle variable" comme "modèle de fonction" ou "modèle de classe". Ce n'est pas un concept valide en C++, pas moins parce que cela ne servirait à rien! Si 'T' et' evenT' sont des types définis, alors vous devriez pouvoir supprimer en toute sécurité le 'template <...>' avant la définition de 'lookup', et tout devrait être compilé. –
Ah, merci d'avoir éclairci ça. Cela a plus de sens maintenant. Eh bien, je suis coincé avec ce problème, et je ne connais pas un bon moyen de gérer cela. Peut-être, vous pouvez suggérer une meilleure façon de faire face à cela. La carte dans ce cas représente un. Cela ne fonctionne évidemment pas pour la raison que vous avez mentionnée. La façon dont je l'ai fait fonctionner pour l'instant est: Map :: et FunctionHandler hérite de FunctionBase avec une fonction virtuelle. Mais ceci introduit une entrée virtuelle inutile. Alors, quel serait un bon moyen de faire face à cette situation? –
brainydexter