我有成员函数类:的std ::一个成员函数绑定到对象指针
typedef std::function<bool (const std::string &)> InsertFunction;
bool insertSourceFile(const std::string &);
bool insertSourceDir(const std::string &);
bool insertHeaderFile(const std::string &);
bool insertHeaderDir(const std::string &);
我想有这些InsertFunction
S IN另一个类中的一个的参考,并用它来做好自己的工作(不必为这些功能中的每一个做类)。我尝试使用类构造函数和std::bind
的成员函数的隐式第一个参数绑定到对象的问题指针:
new ListParser(p_target->sourceDirs(), bind(&Target::insertSourceFile, p_target, _1), this);
与
ListParser::ListParser(const stringSet &dirs, const InsertFunction &insert,
State* parent = 0)
: ParserState(parent),
m_dirs(dirs),
m_insert(insert)
{ }
UPDATE:感谢@lijie时,现在编译源程序,但是当函数m_insert被调用时,std::bad_function_call
被抛出std::exception
。什么可能是错的?谢谢!如果您需要更多信息,请询问!
谢谢,我用更正的语法更新了这个问题。我确实希望使用m_insert作为一个函数,它使用`const std :: string&`并返回一个`bool`,并且该函数是`p_target`(因此是绑定)中的一个。 – rubenvb 2010-11-23 15:58:26