带模板的 C++ 函数指针

C++ function pointer with templates

我正在尝试存储指向成员函数的指针。需要存放指针的class声明为:

template <typename TDataType, typename T>
bool my_function(std::string topic_name,
                 void(T::*)(const TDataType&) fp,
                 T* obj)

我收到错误:

error: expected ',' or '...' before 'fp'
                               void(T::*)(const TDataType&) fp,

谁能告诉我这是怎么回事?看起来这是一个我没有得到的语法错误。

变化:

void(T::*)(const TDataType&) fp

void(T::* fp)(const TDataType&)

成员函数指针的语法是

return_type(class_name::* function_pointer_name)(function_parameters)

所以

template <typename TDataType, typename T>
bool my_function(std::string topic_name,
                 void(T::*)(const TDataType&) fp,
                 T* obj)

需要

template <typename TDataType, typename T>
bool my_function(std::string topic_name,
                 void(T::* fp)(const TDataType&)'
                 T* obj)