C ++ / boost:声明一个封装的shared_array

时间:2013-07-11 06:38:45

标签: c++ boost smart-pointers

我最近开始使用智能指针。 如果我是正确的,则声明智能指针:

shared_array<double> a(new double[n]);

但如果a被封装在一个类中,我们该怎么做? 目前我正在做的如下,但这看起来非常难看:

头文件:

class Foo {
public:
    Foo(int size);
    shared_array<double> _a;
};

源文件

Foo::Foo(int n){
    shared_array<double> p (new double[n]);
    _a = p;
}

1 个答案:

答案 0 :(得分:2)

您可以使用构造函数初始化列表:

Foo::Foo(int n) : _a(new double[n]) {}

如果您需要在构造函数的主体中设置托管数组,那么

Foo::Foo()
{
  int n = someCalculation();
  _a.reset(new double[n]);
}