gpt4 book ai didi

c++ - 将 sharet_ptr 转换为 shared_ptr

转载 作者:行者123 更新时间:2023-12-01 14:47:25 27 4
gpt4 key购买 nike

我有一个

class A: public std::enable_shared_from_this<A>{....}

class B: public A{....}
稍后在代码中,我这样做:
std::shared_ptr<A> Construct(....){
class_field=std::make_shared<B>(...);

return class_field->shared_from_this();
}
使用此代码,我想确保 B 的对象在当前类被销毁后以及客户端函数中的对象超出范围时被销毁。
这是处理这个问题的正确方法吗?有没有更好的方法从 shared_ptr 获取 shared_ptr?

最佳答案

shared_from_this的目的是可以从类本身访问共享指针。
你不应该在类之外使用它,因此你有问题的代码只是一种矫枉过正。它应该是:

std::shared_ptr<A> Construct(....){
return std::make_shared<B>(...);
}

关于c++ - 将 sharet_ptr<Derived> 转换为 shared_ptr<Base>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62760079/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com