通过构造函数初始化数组

时间:2012-01-06 19:11:39

标签: c++ arrays constructor

我有:

class first{
   private:
   int *array;

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

我想通过以下方式打电话给这个班级:

first class1 = new first(10);

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

2 个答案:

答案 0 :(得分:4)

这就够了:

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可能会更好。


旁注:由于您在构造函数中进行了内存分配,因此您还应该implement a destructor, copy-constructor, and copy-assignment operator

答案 1 :(得分:2)

您已指出您想要一维数组(int*),但尝试分配二维数组(new [x][10])。

我假设您需要一个维度。

C ++的方法是使用vector

#include <vector>

class first{
   private:
   std::vector<int> array;

   public:
   explicit first(int x) : array(x) {
   }
};