Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ boost::函数和多参数成员函数_C++_Boost Function - Fatal编程技术网

C++ boost::函数和多参数成员函数

C++ boost::函数和多参数成员函数,c++,boost-function,C++,Boost Function,我对boost::function对象有以下定义: typedef boost::function<std::string (std::string, std::string)> concat; 任何人有什么想法吗?如果不看ConcatValue的声明,很难准确地说出来,但你想要的是: boost::bind(&Decomposer::ConcatValues, some_decomposer_instance, _1, _2) 如果看不到ConcatValue的声明,很

我对boost::function对象有以下定义:

typedef boost::function<std::string (std::string, std::string)> concat;

任何人有什么想法吗?

如果不看ConcatValue的声明,很难准确地说出来,但你想要的是:

boost::bind(&Decomposer::ConcatValues, some_decomposer_instance, _1, _2)

如果看不到ConcatValue的声明,很难做到精确,但您需要的是:

boost::bind(&Decomposer::ConcatValues, some_decomposer_instance, _1, _2)

您需要提供分解器对象的实例,如下所示:


boost::apply_visitor add_node_value_visitor boost::bind&Decomposer::ConcatValues,您的分解器,_1,_2,key,var

您需要提供分解器对象的实例,如下所示:


boost::apply_visitor add_node_value_visitor boost::bind&Decomposer::ConcatValues,您的分解器,_1,_2,key,var

答案取决于ConcatValues到底是什么。我猜想它实际上是一个分解器类的非静态成员函数,因此它实际上并不需要两个参数,而是三个参数:两个字符串和调用它的分解器实例

Bind确实是一个解决方案,因为它将帮助您将成员函数的第一个参数绑定到分解器实例,并转发传递的两个std::string:


答案取决于ConcatValues到底是什么。我猜想它实际上是一个分解器类的非静态成员函数,因此它实际上并不需要两个参数,而是三个参数:两个字符串和调用它的分解器实例

Bind确实是一个解决方案,因为它将帮助您将成员函数的第一个参数绑定到分解器实例,并转发传递的两个std::string:

boost::bind(&Decomposer::ConcatValues, some_decomposer_instance, _1, _2)
Decomposer decomposer;
boost::apply_visitor(
   add_node_value_visitor(boost::bind(&Decomposer::ConcatValues, &decomposer, _1, _2), var
);