【发布时间】:2014-07-07 06:29:35
【问题描述】:
我只是在学习 C++。我正在练习初始化列表,所以我做了一个这样的课程
class Matrix
{
public:
const int x_size;
const int y_size;
int *data;
Matrix(int _x_size, int _y_size) : x_size(_x_size), y_size(_y_size)
{
data = new int[y_size][x_size];
}
~Matrix()
{
delete[][] data;
}
};
int main(void)
{
Matrix A = Matrix(10, 10);
return 0;
}
并且编译器说:operator new 中的数组大小必须是常量。 所以我搜索了一下,有人说,这些不是'编译器时间常数'。
但很明显,我不能在这里使用那个大小作为宏...... 然后。我应该如何使用构造函数获得适当大小的数组?
【问题讨论】:
-
您应该真正使用单个一维数组,并通过两个索引添加访问权限。一维数组可以是
std::vector<int>以简化事情。 -
忘记数组,使用 std::vector。
-
删除将是
delete[] data;btw -delete[]表单涵盖任何维度的数组。
标签: c++ arrays constructor size constants