将模板函数传递给另一个带有typedef参数的函数

时间:2013-10-08 16:34:16

标签: c++ templates typedef

我正在尝试将模板函数传递给另一个带有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参数不匹配。

我对模板功能没有多少经验,所以我不确定是什么问题。 有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

您已经定义了一个接受void参数的函数指针,但您的dosomething有一个void*参数。 我认为你必须声明你的processDoSomething函数:

void processDoSomething(header<someType, someType>::funcPointer F){
    // code here
}

修改 也因为你的dosomething是模板,你必须使用它:(我不确定,对不起,我现在无法用代码测试它)

processDoSomething(&dosomething<someType, someType>);