定义指向模板函数的函数指针类型

发布时间:2016-12-7 3:53:49 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"定义指向模板函数的函数指针类型",主要涉及到定义指向模板函数的函数指针类型方面的内容,对于定义指向模板函数的函数指针类型感兴趣的同学可以参考一下。

http://bbs.csdn.net/topics/390010520 C/C++ code ? 1 2 3 4 5 template <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++ 中只有函数模板,注意函数模板是一个模板,不是函数,因此也不存在指向它的指针。 你还是说说到底要干嘛吧,说不定不用这么麻烦呢。 如果LZ是需要一个指向函数模板的指针的话,建议参考STL中仿函数的实现 你可以用你现在需要被指向的函数当做一个参数传给仿函数的构造器,然后重载()运算符即可 引用 6 楼 mingliang1212 的回复: 引用 3 楼 的回复: 一个简单的原因就是,模板在实例化之前就不存在,所以你这个所谓的模板函数的指针在类型未确定之前根本就没意义。 negetive ,  模板是一个实体(entity),模板可以作为模板参数. 但是指针指向的是一个对象或函数,故不能指向模板. 你还是没理解我的意思,模板可以作为参数这点没错,但是这里不同。LZ的两种形式 1.typedef是想定义一个类型别名,很明显这个指针的类型根本不确定 2.声明一个指针,同样这个指针的类型也不确定。当然编译无法通过。而你所说的作为参数 我们在使用的时候在传递参数的时候不会出现类型不确定这回事。 template <typename PktType> struct Wrapper { typedef int (* CallbackFunPtrType) (const PktType& CurPkt); }; 这样不就行了 用的时候就 Wrapper<int>::CallbackFunPtrType callback=.... 支持C++11的话,用std::function。不支持的话,用boost::function。

上一篇:uva 10670 Work Reduction
下一篇:分享asp.net的图片验证码的HtmlHelper

相关文章

相关评论