C++ 模板函数指向结构中的函数指针

C++ 模板函数指向结构中的函数指针,c++,function,templates,pointers,C++,Function,Templates,Pointers,我想使用模板函数通过其指针引用,该指针使用函数指针,该指针可在类似 typedef struct arithmeticfunc { string funcName; int (*funPtr)(int,int); }; 例如: int add(int a, int b) return (a+b); int sub(int a, int b) return (a-b); arithmeticfunc func[2] = { {"ADDI

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

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

int add(int a, int b)
    return (a+b);

int sub(int a, int b)
    return (a-b);

arithmeticfunc func[2] = { {"ADDITION", &add},
                           {"SUBTRACT", &sub} };

for(int i = 0; i < 2; i++) {
    printf("Result of Function : %s is %d",func[i].funcName.c_str(),func[i]->funcPtr(2,1));
}
intadd(inta,intb)
返回(a+b);
内部子(内部a、内部b)
返回(a-b);
算术func func[2]={{“加法”,&add},
{“SUBTRACT”,&sub};
对于(int i=0;i<2;i++){
printf(“函数:%s的结果是%d”,func[i].funcName.c_str(),func[i]->funcPtr(2,1));
}
现在我需要使用一个模板函数,而不是普通的静态函数


请告诉我,我的方法是否正确。

如果我理解您的问题,您希望您的
结构和函数成为模板吗

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;
}
模板
结构算术函数
{
std::字符串名称;
T(*funPtr)(T,T);
};
模板
T添加(T a,T b)
{
返回a+b;
}
模板
T接头(T a、T b)
{
返回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;
    }
}
intmain()
{
算术func func[2]={{“加法”,&add},
{“SUBTRACT”,&sub};
对于(int i=0;i<2;i++)
{

std::cout您试图制作结构和函数模板的内容是什么?您在哪里遇到了这些问题?请编辑您的问题并显示为示例,以及确切的错误消息。如果您没有意识到,您可能会尝试实现许多基本功能(将名称与函数关联)已由
std::map
/
std::unordered_map
@JerryCoffin提供,其模板函数也已存在others@CoryKramer:说得好。谢谢。我需要知道,如果我将所有模板函数移动到单独的头文件(例如tempFunc.h)中,我需要进行哪些更改并在main()上定义arthimeticfunc?…我尝试了这种方法,但没有得到函数“add”的有效指针,无论我们是否需要使用&add来进行添加。。这两种方法都可以使用??!!