boost :: bind和对temp变量的引用

时间:2011-02-01 13:34:13

标签: c++ boost boost-bind object-lifetime boost-function

假设我有方法:

void foo(const std::string& s);

我可以创建boost :: function:

boost::function<void(const std::string&)> f = boost::bind(foo, temp);

其中temp是char *,在调用f之前删除。

2 个答案:

答案 0 :(得分:5)

是。绑定不能知道char *可以保存在字符串中,或​​者它被传递给字符串。为了避免这种情况,请使用:

boost::bind(foo, std::string(temp));

这样你的temp就会以字符串形式复制到binder中。

答案 1 :(得分:0)

这是为你编译的吗?它应该是

boost::function<void()> f = boost::bind(foo, std::string(temp));