2015-11-06 4 views
0

Я пытаюсь сохранить указатель на функцию-член. Класс, который должен хранить указатель объявлен как:Указатель функции C++ с шаблонами

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, 

Может кто-нибудь сказать мне, что происходит? Похоже, это синтаксическая ошибка, которую я не получаю.

ответ

1

Синтаксис указателя функции член

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) 
3

Изменение:

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

в

void(T::* fp)(const TDataType&) 
Смежные вопросы