我正在尝试将模板函数传递给另一个带有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参数不匹配。
我对模板功能没有多少经验,所以我不确定是什么问题。 有人能帮助我吗?
答案 0 :(得分:1)
您已经定义了一个接受void参数的函数指针,但您的dosomething
有一个void*
参数。
我认为你必须声明你的processDoSomething
函数:
void processDoSomething(header<someType, someType>::funcPointer F){
// code here
}
修改强>
也因为你的dosomething
是模板,你必须使用它:(我不确定,对不起,我现在无法用代码测试它)
processDoSomething(&dosomething<someType, someType>);