gpt4 book ai didi

boost - 在构造函数中使用引用创建 boost::shared_ptr

转载 作者:行者123 更新时间:2023-12-01 23:42:01 24 4
gpt4 key购买 nike

我有以下情况:“B”类继承自“A”类。类“C”有一个对“A”的引用,它在构造函数中被传递给。在“D”类中,我想使用“C”类,但我只有对“B”的引用。目前我正在使用标准指针,但我需要迁移到 boost::shared_ptr。

class A {...};

class B: public A {...};

class C {
public:
C(A& _a)
: a(_a)
{...}

private:
A& a;
};

class D
{
private:
B& b;
void someFunc()
{
C* c1 = new C(b); // Working
boost::shared_ptr<C> c2 = boost::make_shared<C>(b); // not working: "cannot convert const B in A&" error
}
};

我的问题:我需要如何包装/强制转换/取消引用/无论实例“b”是什么,以便正确创建 shared_ptr?

通过上面的实现,我得到了一个“无法在 A& 中转换 const B”的错误。

感谢您的支持。

最佳答案

我自己找到了解决方案:我需要将它包装在 boost::ref 中,即

boost::shared_ptr<C> c2 = boost::make_shared<C>(boost::ref(b));

关于boost - 在构造函数中使用引用创建 boost::shared_ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35792773/

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