gpt4 book ai didi

c++ - 将此指针转换为 boost::shared_ptr?

转载 作者:行者123 更新时间:2023-11-30 00:58:20 26 4
gpt4 key购买 nike

我有一个基类,我想将它的 this 指针转换为它的派生类 shared_ptr。在我的例子中,我不能使用继承 enable_shared_from_this。那么还有其他有效的方法吗?

例如

typedef boost::shared_ptr <a>  aPtr;
typedef boost::shared_ptr <b> bPtr;

Class a{
void fun();
}

class b : public a{
}

a::fun(){

//how to carry out this conversion below
bPtr bpointer = dynamic_cast<bPtr>(this);
}

最佳答案

您需要 boost::enable_shared_from_this。请参阅文档:

class Y: public boost::enable_shared_from_this<Y>
{
public:

boost::shared_ptr<Y> f()
{
return shared_from_this();
}
}

int main()
{
boost::shared_ptr<Y> p(new Y);
boost::shared_ptr<Y> q = p->f();
assert(p == q);
assert(!(p < q || q < p)); // p and q must share ownership
}

关于c++ - 将此指针转换为 boost::shared_ptr?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6476470/

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