boost::bind 和对临时变量的引用

发布于 2024-10-15 01:43:26 字数 263 浏览 6 评论 0原文

假设我有方法:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

风为裳 2024-10-22 01:43:26

是的。 Bind 无法知道 char* 是否可以保存在字符串中,或​​者它是否正在传递给字符串。要避免这种情况,请使用:

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

这样您的临时文件就会作为字符串复制到活页夹中。

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:

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

So that your temp is copied into the binder as a string.

花桑 2024-10-22 01:43:26

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

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

And this is compiling for you? It should be

boost::function<void()> f = boost::bind(foo, std::string(temp));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文