Вы бы сделали
Enemy (*enemies)[2] = new Enemy[6][2];
То есть указатель на массивы 2 врагов.Обратите внимание, что только первый уровень массива может быть сделан указателем и, следовательно, определен во время выполнения.
Также обратите внимание, что ваше второе определение создает массив из 6 * 2 указателей на врагов.Предполагая, что вы инициализировали их все, вы получите доступ к ним как *enemies[j][k]
, или если каждый указатель сам указывает на массив, как enemies[j][k][l]
.
Обратите внимание, что если вы хотите, чтобы оба индекса были определены вво время выполнения вы должны выделить один большой массив и использовать индексную арифметику:
Enemy * враги = новый враг [6 * 2];// доступ к элементу (j, k) врагу [6 * j + k] .fight ();
Конечно, обычно лучше использовать vector<Enemy>
, если ваш класс Enemy
не являетсяподходит для вектора, например, потому что он не может быть скопирован (соответственно в C ++ 11, перемещен).Кроме того, при выполнении многомерных массивов таким образом, в идеале вы должны инкапсулировать логику массива и индекса в классе.