【发布时间】:2019-08-28 06:25:13
【问题描述】:
我想在创建对象时首先初始化“虚拟”数组。我在课堂上的私人部分有这个。
// 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,然后将指针更改为指向数组?
【问题讨论】:
-
int* matrix_[0][0];看起来不对,这是标准吗?您不应该在该函数中使用malloc或new而不是本地自动变量吗?为了避免所有这些,如果可以的话,考虑使用std::vector -
它可能不起作用。我只是想说明我想要实现的目标。 @Ayxan
-
@Ayxan
int* matrix_[0][0]不对,它声明了一个长度为 0 的二维指针数组。但是 malloc 几乎不应该在 c++ 中使用,并且 raw new 很少有位置。 -
我想有一些有占位符的东西,这样当我知道大小时,我可以用实际的二维数组替换它。在初始化对象时,我还不知道要使用的数组的大小。
-
如果我是你,我会保持简单,并接受@Ayxan 的使用 std::vector 的建议。
标签: c++ arrays oop multidimensional-array