如何引用二维数组中的对象?

Bar*_*ski 3 c++ oop reference multidimensional-array

我读到你可以通过这一行声明对象的aray

Enemy * d = new Enemy[2];
Run Code Online (Sandbox Code Playgroud)

但是当我试图制作一个二维数组时,出现了一个无法初始化的错误.我也尝试过这个

Enemy *enemies[6][2];
Run Code Online (Sandbox Code Playgroud)

但我不知道如何引用该数组中的每个对象,以及如何将该引用传递给函数.

The*_*Saw 10

您需要使用指向指针的指针才能生成锯齿状数组.

Enemy** d = new Enemy*[6];
for (size_t i = 0; i < 6; ++i)
    d[i] = new Enemy[2];
Run Code Online (Sandbox Code Playgroud)

如果您打算制作一个固定大小的数组,您可以像创建普通数组一样创建它.

Enemy enemies[6][2];
Run Code Online (Sandbox Code Playgroud)

然后,您只需使用两个索引来引用它们.

enemies[2][1].roar();
Run Code Online (Sandbox Code Playgroud)

注意:您会发现多维数组往往会导致比它们值得更多的麻烦.维护单维数组并根据行数和列数简单地对其进行索引要简单得多.

Enemy* enemies = new Enemy[rows * cols];

Enemy* getEnemy(size_t row, size_t col)
{
    return enemies + (row * cols + col);
}
Run Code Online (Sandbox Code Playgroud)