首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >传递指向std::function<void的指针()>)

传递指向std::function<void的指针()>)
EN

Stack Overflow用户
提问于 2019-04-17 10:09:18
回答 1查看 103关注 0票数 1

std::function<void()>中传递指向[]的指针时,避免UB的最佳实践是什么?

如果对象未被删除,cls_ptrsecond_on_finish中是否总是有效的?

这是当前的代码:

代码语言:javascript
复制
void Foo()
{
    SomeClass* cls_ptr = GetPointerToClass();

    std::function<void()> first_on_finish = [cls_ptr]() {

        if (some_argument == true)
        {
            std::function<void()> second_on_finish = [cls_ptr]() {
                //cls_ptr is always valid here?
            };
            run_in_a_few_seconds(second_on_finish);
        }

    };

    run_in_a_few_seconds(first_on_finish);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-17 10:15:25

如果对象未被删除,cls_ptr在second_on_finish中是否始终有效?

如果你的意思是cls_ptr那时还没有被摧毁--答案是,是,。指针是由值(而不是它所指向的对象)捕获的,所以直到在该地址销毁对象为止--您可以遵从它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55725113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档