Rya*_*yan 1 c++ pointers c++11
在C中,我可以做到这一点.
typdef void(TRAVERSAL_CALLBACK*)(int a);
Run Code Online (Sandbox Code Playgroud)
然后,这将允许我将函数指针作为参数传递给其他函数,该函数具有1个int类型的参数.
我一直在使用模板,目前,将函数指针传递给方法的方式如下:
void my_function(void(TRAVERSAL_CALLBACK*)(T &data));
Run Code Online (Sandbox Code Playgroud)
现在,如果我定义一个类型为T的参数的新类型,我是否可以尝试但是它无法编译.
typedef void(TRAVERSAL_CALLBACK*)(T &data);
Run Code Online (Sandbox Code Playgroud)
我正在使用C++ 11.这是我必须接受的不可能的东西,还是在C++ 11中有一种我不知道的这种方法呢?
是的,在C++ 11中,由于"新",它是可能的using:
template<typename T>
using TRAVERSAL_CALLBACK = void(*)(T &data);
Run Code Online (Sandbox Code Playgroud)
但请注意,在C++中,您可能只需将回调的整个类型作为模板,以允许使用其他类型的可调用对象(仿函数,lambda,...).