0

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

我对模板函数没有太多经验,所以我不确定哪里出了问题。有人能帮我吗?

4

1 回答 1

1

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

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

编辑: 也因为你dosomething是模板,你必须像这样使用它:(我不确定,对不起,我现在不能用代码测试它)

processDoSomething(&dosomething<someType, someType>);
于 2013-10-08T17:05:05.323 回答