При определении x & y внутри функции как постоянных целых чисел массив определяется очень хорошо
Это работает, потому что размер вашего массива определяется и известен вашему компилятору, известному в время компиляции
Когда x и y являются аргументами функции, программа не будет компилироваться.
Когда вы хотите определить свой массивтолько когда вы вызываете свою функцию, вы просите свою программу сделать это во время выполнения .Как ответил Дмитрий Дадыка, вы должны использовать динамическое выделение памяти и самостоятельно управлять выделением памяти (delete [] maze; // delete)
Вот альтернатива динамического определения 2D-массива с использованием шаблона !Обратите внимание, что это всегда делается во время компиляции.
template<int X, int Y>
int f()
{
char c[X][Y];
for(int x=0; x < X; ++x)
{
for(int y=0; y < Y; ++y)
{
c[x][y] = '1';
}
}
// write your algorithm now!....
c[2][2] = 'a';
for(int x=0; x < X; ++x)
{
for(int y=0; y < Y; ++y)
{
std::cout << c[x][y] << " ";
}
std::cout << std::endl;
}
return 0;
}
int main()
{
f<5,5>();
f<7,4>();
return 0;
}