假设我有方法:
void foo(const std::string& s);
我可以创建boost :: function:
boost::function<void(const std::string&)> f = boost::bind(foo, temp);
其中temp是char *,在调用f
之前删除。
答案 0 :(得分:5)
是。绑定不能知道char *可以保存在字符串中,或者它被传递给字符串。为了避免这种情况,请使用:
boost::bind(foo, std::string(temp));
这样你的temp就会以字符串形式复制到binder中。
答案 1 :(得分:0)
这是为你编译的吗?它应该是
boost::function<void()> f = boost::bind(foo, std::string(temp));