模板在函数指针c ++中的参数

问题描述 投票:0回答:1

我有一个模板:

template<typename T>
void testFuction(int(*testFunc)(CallBack, void *, T *)) {
    // define CallBack callback, void* param1, T* param2
    ...
    testFunc(callback, param1, param2);
}

虽然有效,但看起来很糟糕,我想做类似的事情:

template<typename T>
// using TestFunc<T> = std::function<int(CallBack, void *, T *)>
void testFuction(TestFunc<T> testFunc)
    // define CallBack callback, void* param1, T* param2
    ...
    testFunc(callback, param1, param2);
}

但是它不起作用。

某些身体可以帮助我吗?我还重载了许多类似的函数,并添加了一些参数,它们看起来很丑陋。我想一次定义TestFunc<T>,然后在模板函数中再次使用它。

c++ templates function-pointers
1个回答
0
投票

您可以为模板化函数指针提供类型别名,如下所示

template<typename T>
using FunPointerT = int(*)(CallBack, void*, T*);

template<typename T, typename... Args>
void testFuction(FunPointerT<T> funcPtr, Args&& ...args)
{
      testFunc(std::forward<Arg>(args)...);
}
© www.soinside.com 2019 - 2024. All rights reserved.