【发布时间】:2011-04-02 12:10:03
【问题描述】:
我不确定初始化作为类成员的shared_ptr 的好方法。能否告诉我,我在C::foo()中选择的方式是否可以,或者有更好的解决方案吗?
class A
{
public:
A();
};
class B
{
public:
B(A* pa);
};
class C
{
boost::shared_ptr<A> mA;
boost::shared_ptr<B> mB;
void foo();
};
void C::foo()
{
A* pa = new A;
mA = boost::shared_ptr<A>(pa);
B* pB = new B(pa);
mB = boost::shared_ptr<B>(pb);
}
【问题讨论】:
-
chubsdad:在成员中不起作用,仅在 ctors 中起作用。
-
@MSalters:我不知道你想说什么。
-
在最初的问题中,我说的是函数 foo(),而不是构造函数。所以初始化列表不适合。
-
虽然在构造函数中初始化成员通常更好,但您的代码仍然有效。但是你到底在问什么?
标签: c++ boost initialization shared-ptr member