Ich habe die folgende Definition einer boost :: function Objekt:boost :: function und mehr Argumente Mitglied-Funktion
typedef boost::function<std::string (std::string, std::string)> concat;
Ich bin vorbei diese Funktion als struct Konstruktorargument:
struct add_node_value_visitor : boost::static_visitor<>
{
typedef boost::function<std::string (std::string, std::string)> concat;
add_node_value_visitor(concat _func, std::string key) : _func_concat(_func), _key(key) {}
template <typename T>
void operator() (const T& value) const
{
std::string result = _func_concat(boost::lexical_cast<std::string, T>(value), _key);
}
std::string _key;
concat _func_concat;
};
Jetzt muss ich die struct add_node_value_visitor
an die folgende Funktion übergeben, aber die boost::function<T>
akzeptiert nicht die 2 arg Member-Funktion, in der Dokumentation heißt es, ich sollte boost :: bind verwenden, aber ich bin mir jedoch nicht sicher, wie ich das tun würde , da muss ich auch meinen boost :: apply_visitor fun befriedigen ction.
boost::apply_visitor(add_node_value_visitor(&Decomposer::ConcatValues, key), var); // ConcatValues takes 2 args, var = boost::variant
std::string ConcatValues(std::string str, std::string key);
Irgendwelche Ideen jemand?