定义指向模板函数的函数指针类型,该如何解决
定义指向模板函数的函数指针类型C/C++ codetemplate typename PktTypetypedef int (* CallbackFunPtrTyp
定义指向模板函数的函数指针类型
C/C++ codetemplate <typename PktType>typedef int (* CallbackFunPtrType) (const PktType& CurPkt);//1,提示编译错误template <typename PktType>int (* CallbackFunPtr1) (const PktType& CurPkt);//2,提示编译错误
现在需要定义一个指向模板函数的函数指针类型,查了相关资料得知现在c++好像不支持这个特性。
vs2008发现,不但不能用typedef定义指向模板函数的函数指针类型,1处所示;连定义一个指向模板函数的函数指针都不可以,2处所示。
有没有其他巧妙的方法可以实现?求赐教!
[解决办法]c++11 14/1 says
A template defines a family of classes or functions or an alias for a family of types.
因此,不存在 function pointer template.
另外,你的概念似乎有些混淆。c++ 标准中不存在模板函数的概念,因此也不存在"模板函数的函数指针"。c++ 中只有函数模板,注意函数模板是一个模板,不是函数,因此也不存在指向它的指针。
你还是说说到底要干嘛吧,说不定不用这么麻烦呢。
[解决办法]一个简单的原因就是,模板在实例化之前就不存在,所以你这个所谓的模板函数的指针在类型未确定之前根本就没意义。
[解决办法]我只是想说,,模板在实例化之前是存在的..
只不过不是类型.所以 typedef 不行.指针不行..
[解决办法]template <typename PktType>
struct Wrapper
{
typedef int (* CallbackFunPtrType) (const PktType& CurPkt);
};
这样不就行了
用的时候就
Wrapper<int>::CallbackFunPtrType callback=....