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

How to initialize array later when using private object variable (after initializing the object)

本文关键字:对象 初始化 数组 变量      更新时间:2023-10-16

我想在创建对象时首先初始化"虚拟"数组。我在课堂的私人部分有这个。

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

在C++中执行此操作的正确方法是使用向量。

vector<vector<int>> matrix_;  

然后,您可以动态调整矩阵的大小

void set_map_size(int width, int height) {
    matrix_.resize(height); 
    for (auto &x : matrix_) 
       x.resize(width);
}

因为数组是固定大小的,可变长度数组不是标准C++(即使某些编译器接受它(。