C++ boost::函数和多参数成员函数
我对boost::function对象有以下定义: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的声明,很
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
);