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来进行添加。。这两种方法都可以使用??!!