我正在尝试使用这种格式创建动态数组。
#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文件中使用。
答案 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
不可复制。