3

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

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

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

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

但假设我想设置这样的东西:

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

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

4

2 回答 2

4

您不能有指向函数模板的指针,只能指向函数。所以实际上模板是无关紧要的。你会做类似的事情

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

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

于 2012-07-18T14:25:28.493 回答
1

完全相同的:

base *(*funcptr)() = &createT<base, derived>;
于 2012-07-18T14:25:57.323 回答