我有:
class first{
private:
int *array;
public:
first(int x){
array = new int[x][10];
}
我想通过以下方式打电话给这个班级:
first class1 = new first(10);
为什么它不起作用?如何从构造函数中按大小初始化数组?
答案 0 :(得分:4)
这就够了:
first class1(10);
new
用于分配指针时。
first *class1 = new first(10);
此外,您在此处不兼容:
array = new int[x][10];
array
是int*
,但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) {
}
};