稍后在使用私有对象变量时(初始化对象之后)如何初始化数组

时间:2019-04-06 15:52:44

标签: c++ arrays oop multidimensional-array

我想在创建对象时首先初始化“虚拟”数组。我在班上的私人课上有这个。

// 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,然后将指针更改为指向数组吗?

1 个答案:

答案 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 ++(即使某些编译器接受)。