boost::bind 和对临时变量的引用
假设我有方法:
void foo(const std::string& s);
我可以创建 boost::function:
boost::function<void(const std::string&)> f = boost::bind(foo, temp);
其中 temp 是在调用 f
之前删除的 char* 。
Suppose I have method:
void foo(const std::string& s);
Can I create boost::function:
boost::function<void(const std::string&)> f = boost::bind(foo, temp);
where temp is char* that is deleted before f
is called.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的。 Bind 无法知道 char* 是否可以保存在字符串中,或者它是否正在传递给字符串。要避免这种情况,请使用:
这样您的临时文件就会作为字符串复制到活页夹中。
Yes. Bind cannot know that the char* can be held in a string, or that it is being passed to a string. To circumvent this, use:
So that your temp is copied into the binder as a string.
这是为你编译的吗?应该是
And this is compiling for you? It should be