在C ++中使用make_unique在类中创建动态数组

时间:2016-10-01 02:37:20

标签: c++ dynamic-arrays

我正在尝试使用这种格式创建动态数组。

#include <iostream>
#include <string.h>
#include <memory>  // for make_unique?

using std::make_unique;
using std::string;

class Kitchen
{
private:

    auto dynamicArray = make_unique<string[]>(10);

这是在我的Kitchen.h文件中。

显示的错误是:'auto'不能在这里使用。我不确定这是因为我在私有下使用“auto”,或者它可能无法在.h文件中使用。

2 个答案:

答案 0 :(得分:1)

我不明白你想做什么。如果你想要一个动态数组,为什么不使用std :: vector?查看下面的示例并在构造函数中初始化向量。

#include <iostream>
#include <string>
#include <vector>

class Kitchen {
public:
  Kitchen() {}
private:

  std::vector<std::string> dynamicArray;
}

我认为如果你需要与此不同的东西,你应该给我们更多细节。

答案 1 :(得分:1)

首先,使用<string.h>时,C兼容性标头std::string是错误的。包括<string>

其次,无法将static类数据成员声明为auto。例如。 g ++编译器以这种方式做出反应:

error: non-static data member declared 'auto'

第三,只需使用std::vector作为动态大小的数组。它是可复制的。 std::unique_ptr不可复制。