通过构造函数初始化数组

Array initialization by constructor

本文关键字:数组 初始化 构造函数      更新时间:2023-10-16

我有:

class first{
   private:
   int *array;
   public:
   first(int x){
     array = new int[x][10];
   }

我想打电话给这个班:

first class1 = new first(10);

为什么它不起作用?如何从构造函数中按大小初始化数组??

仅此而已:

first class1(10);

new用于分配指针。

first *class1 = new first(10);

此外,您在这里有一个不兼容:

array = new int[x][10];

arrayint*,但new int[x][10]是2D阵列。我不确定你想要哪一个。

对于1D阵列:

int *array;
array = new int[x];

对于2D阵列:

int (*array)[10];
array = new int[x][10];

也就是说,使用std::vector可能会更好。


附带说明:由于构造函数中有内存分配,因此还应该实现析构函数、复制构造函数和复制赋值运算符。

您已经表示想要一个一维数组(int*),但试图分配一个二维数组(new [x][10])。

我想你需要一个维度。

实现这一点的C++方法是使用vector

#include <vector>
class first{
   private:
   std::vector<int> array;
   public:
   explicit first(int x) : array(x) {
   }
};