c++ - 将模板函数传递给另一个采用 typedef 参数的函数

标签 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 参数不匹配。

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

最佳答案

您已经定义了一个接受 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/

相关文章:

c++ - 及时调试和文件流的真正奇怪的问题

c++ - 与可变参数模板一起使用的基类列表

c++ - 为集合的每个元素添加值的模板函数

c++ - 位摆弄 : find next power of two with templates in c++

c++ - 用整数填充自定义整数数组

c++ - 从 QT 中的 C++ 代码访问 QML 元素

c++ - 这里的typedef有什么用?

c - 在 C 编程中定义和初始化此数据类型

c - 这可能使用 typedef 枚举的成员吗?

c++ - 'struct (*)[]' 和 'struct *[]' 有什么区别?