模板函数到结构内的函数指针

时间:2015-08-19 18:55:02

标签: c++ function templates pointers

我想使用函数指针通过其指针引用模板函数,函数指针在

这样的结构中可用
header-video

例如:

typedef struct arithmeticfunc {
          string funcName;
          int (*funPtr)(int,int);
};

现在我需要使用模板函数而不是普通的静态函数。

请告诉我,我正在做正确的方法。

1 个答案:

答案 0 :(得分:0)

如果我理解您的问题,您希望struct和函数是模板吗?

template <typename T>
struct arithmeticfunc
{
    std::string funcName;
    T (*funPtr)(T, T);
};

template <typename T>
T add(T a, T b)
{
    return a+b;
}

template <typename T>
T sub(T a, T b)
{
    return a-b;
}

然后你可以按如下方式使用它们

int main()
{
    arithmeticfunc<int> func[2] = { {"ADDITION", &add},
                                    {"SUBTRACT", &sub} };

    for(int i = 0; i < 2; i++)
    {
        std::cout << "Result of Function : " 
                  << func[i].funcName
                  << " is "
                  << func[i].funPtr(2,1)
                  << std::endl;
    }
}

请注意,如果您使用模板,则无法再使用%d格式代码,因为T的类型可能不是整数,可能是double