指向模板函数的指针

时间:2012-07-18 14:21:47

标签: c++

所以我现在很乐意在地图容器中存储模板函数指针,主要是作为一种模板函数的方法,该函数返回模板化对象的新实例,并将该函数指针存储在给定相应的时要调用的地图中字符串索引(这是一口)。我的问题在于使用模板函数指针。这似乎有用的唯一原因是因为返回类型或参数都不是类型模板参数。它看起来像这样:

template<class T>
base * createT() {return new T;}

其中T应该是从base派生的类。现在我可以制作一个工作正常的函数指针

base*(*funcptr)() = &createT<derived>;

但是我想说我想设置这样的东西:

template <class returnType, class T>
returnType * createT() { return new T;}

函数指针的声明对于这个函数会是什么样的?

2 个答案:

答案 0 :(得分:4)

您不能指向功能模板,只能指向功能。所以模板真的无关紧要;你会做类似

的事情
A *(*funcptr)() = &createT<A,B>;

演示:http://ideone.com/NoHYS

答案 1 :(得分:1)

完全一样:

base *(*funcptr)() = &createT<base, derived>;