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

Creating dynamic array in a class using make_unique in C++

本文关键字:创建 动态 数组 unique make c++      更新时间:2023-10-16

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

#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);

这是在我的厨房。h文件。

出现的错误是:'auto'不能在这里使用。我不确定这是因为我在私有下使用"auto",或者它不能在。h文件中使用。

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

#include <iostream>
#include <string>
#include <vector>
class Kitchen {
public:
  Kitchen() {}
private:
  std::vector<std::string> dynamicArray;
}

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

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

第二,非static类数据成员不能声明为auto。例如,g++编译器的反应如下:

<>之前错误:非静态数据成员声明为"auto"之前

第三,对动态大小的数组使用std::vector。这是复制。std::unique_ptr是不可复制的