我正在尝试将模板函数传递给另一个采用 typedef 参数的函数。
比如我有函数
在header.h中
template<typename A, typename B>
class header: public baseHeader<A, B>{
public:
typedef void (* funcPointer)(void);
// and more...
}
在source.cxx中
template<typename A, typename B>
void dosomething(void *arg){
// code here
}
void processDoSomething(funcPointer F){
// code here
}
template<typename A, typename B>
void work(){
processDoSomething(dosomething);
}
很抱歉代码非常困惑,但我想做的是将模板函数传递给另一个采用 typedef 参数的函数。我在 processDoSomething(dosomething) 收到“未解析的重载函数类型”错误,说它与 typdef 参数不匹配。
我对模板函数没有太多经验,所以我不确定哪里出了问题。 有人可以帮助我吗?
最佳答案
您已经定义了一个接受 void 参数的函数指针,但是您的 dosomething
有一个 void*
参数。
我还认为您必须像这样声明您的 processDoSomething
函数:
void processDoSomething(header<someType, someType>::funcPointer F){
// code here
}
编辑:
还因为你的 dosomething
是模板,你必须像这样使用它:(我不确定,对不起,我现在不能用代码测试它)
processDoSomething(&dosomething<someType, someType>);
关于c++ - 将模板函数传递给另一个采用 typedef 参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19253375/