我想在创建对象时首先初始化“虚拟”数组。我在班上的私人课上有这个。
// Initialize dummy array when object is initialized.
int* matrix_[0][0];
然后我要稍后初始化新数组以替换虚拟数组(具有实际大小的一个数组)。我班上有这个方法:
void set_map_size(int width, int height) {
int* pm[width][height];
matrix_ = pm;
}
所以问题是当我在创建对象之后尝试初始化此数组时。我希望其他方法/其他对象可以访问此数组。
也许我应该有指针?创建对象时将指针初始化为nullptr,然后将指针更改为指向数组吗?
答案 0 :(得分:1)
在C ++中执行此操作的正确方法是使用向量。
vector<vector<int>> matrix_;
然后您可以动态调整矩阵的大小
void set_map_size(int width, int height) {
matrix_.resize(height);
for (auto &x : matrix_)
x.resize(width);
}
因为数组的大小固定,而可变长度的数组不是标准的C ++(即使某些编译器接受)。