通过构造函数初始化数组
Array initialization by constructor
我有:
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];
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
可能会更好。
附带说明:由于构造函数中有内存分配,因此还应该实现析构函数、复制构造函数和复制赋值运算符。
您已经表示想要一个一维数组(int*
),但试图分配一个二维数组(new [x][10]
)。
我想你需要一个维度。
实现这一点的C++方法是使用vector
。
#include <vector>
class first{
private:
std::vector<int> array;
public:
explicit first(int x) : array(x) {
}
};
相关文章:
- C++使用整数的压缩数组初始化对象
- C++17中函数模板中的静态数组初始化(MSVC 2019)
- 从另一个静态常量数组初始化静态常量数组(只需少量计算)
- 在 Python 和 c++ 2d 数组初始化之间.这是怎麽?为什么呢?
- 字节数组初始化会导致 DirectX 崩溃
- 使用 new 和 值进行数组初始化,但没有显式数量的元素
- 运行时C++数组初始化问题
- 使用带有参数包的数组的成员数组初始化类
- 仅通过C++中数组初始化的不同方法,即可在同一输入上获得两个不同的答案
- C++ 2 个指针数组初始化 C2440
- C++结构字符数组初始化
- C++中的多维数组初始化
- constexpr数组初始化
- C++引物动态数组初始化程序的数目超过大小
- 使用std::index_sequence对std::数组初始化进行包扩展
- 当 std 数组初始化太小时,C++会引发错误吗?
- 如何确定结构数组初始化的大小?
- Qt并发错误:数组初始化需要大括号括起来的初始值设定项列表
- 此代码中的数组初始化样式是什么?这是标准的吗?
- C++ 使用数组初始化时的 STL 向量内存管理