std :: function作为方法参数

时间:2014-04-08 07:59:41

标签: c++ stl

我对仿函数非常陌生,我必须为API创建一个使用函数作为参数的方法。 所以,在我的标题中,我已经完成了:

typedef void(*target_function)(std::string client_ip);
void my_method(std::string path_name, std::function<target_function> a_function);

在我的cpp中,我试过这种方式:

void my_class:: my_method(std::string path_name, std::function<target_function> )
{
    ///
}

但它不会编译。

我对此非常困惑......你能帮我解决一下吗?

编辑: 它开玩笑了! 谢谢,大家,非常快速的回答!

3 个答案:

答案 0 :(得分:6)

@ Cheers-and-hth-alf是对的。但我更喜欢这个:

typedef std::function<void (std::string)> TTargetFunc;
void my_method(std::string path_name, TTargetFunc a_function);

答案 1 :(得分:4)

尝试

typedef void target_function(std::string client_ip);

因为std::function将函数类型作为模板参数,而不是函数指针类型。

答案 2 :(得分:0)

首先删除空格并添加函数名称参数名称,如下所示:

void my_class::my_method(std::string path_name, std::function<target_function> a_function) 
{
    /// 
}

此外,您应该将其声明为std::function<void(std::string)>。 typedef是杂乱的(imo)。