【问题标题】:typedef function pointer having templatized parameter [duplicate]具有模板化参数的 typedef 函数指针
【发布时间】:2019-08-24 18:07:13
【问题描述】:

我想为以模板为参数的方法签名创建一个函数指针

Template<class T>
typedef int (*computeSizeFunc)(T data);

我试过了,这是错误

 error: template declaration of 'typedef'
 typedef  int (*computeSizeFunc)(T data).

这是我尝试为其编写函数指针的方法签名

template<class T>
int getSize (T data)

【问题讨论】:

    标签: c++ c++11


    【解决方案1】:

    您应该改用 C++11 type-alias 声明:

    template<class T>
    using computeSizeFunc = int (*)(T data);
    

    【讨论】:

      【解决方案2】:

      typedef 不允许使用template,你应该使用using

      template<class T>
      using computeSizeFunc = int (T data);
      

      【讨论】:

        【解决方案3】:

        作为 C++11 之前的其他方法的替代方法,您可以使用如下解决方法:

        template< class Arg >
        struct computeSizeFunc {
          typedef int (*funcImpl)(Arg data);
        };
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-07
          相关资源
          最近更新 更多