读书人

为什么函数指针不能做成模板?该如何解

发布时间: 2012-02-23 22:01:34 作者: rapoo

为什么函数指针不能做成模板?


class CCallback
{
public:
string ID;
template <typename T>
void (*pfun)(T);

};


[解决办法]
改成

template < class T >
class CCallback
{
public:
string ID;
void (*pfun)(T);
};


[解决办法]
理论上应该可以吧。你可以用定义函数对象试试,标准C++推荐用函数对象代替函数指针。
[解决办法]
在C++09标准里也许会增加这个功能。
现在C++没提供这个功能,没啥为什么。
[解决办法]
因为只有类模版和函数模版,没有函数指针模版。
成员模版也只能是成员函数模版和内嵌类模版。
所以这个和是不是成员没有关系,即使在类定义域之外,也是不能定义函数指针模版的。
但是如果定义一个函数对象,就是定义一个类,则是可行的。
[解决办法]
变量(包括成员变量)都应该是一个完整类型的变量吧

带模板参数的变量编译器改怎么实例化呢?

读书人网 >C++

热点推荐