Эта функция задавалась здесь несколько раз, но меня интересует конкретный случай. Возможно ли, чтобы размер передаваемого массива определялся дополнительным аргументом?
В качестве примера предположим, что мне нужна функция для печати двумерного массива. Однако массив может не иметь одинаковых размеров каждый раз. Было бы идеально, если бы у меня были дополнительные аргументы, определяющие размер этого массива. Я знаю, что я мог бы легко заменить n
числом здесь по мере необходимости, но если у меня есть более сложные функции с отдельными файлами заголовков, кажется глупым идти и редактировать файлы заголовков каждый раз, когда появляется массив другого размера. Следующие результаты приводят к error: use of parameter 'n' outside function body...
, что я понимаю, но хотел бы найти обходной путь. Я также пробовал с g++ -std=c++11
, но все та же ошибка.
#include <iostream>
using namespace std;
void printArray(int n, int A[][n], int m) {
for(int i=0; i < m; i++){
for(int j=0; j<n; j++) {
cout << A[i][j] << " ";
}
cout << endl;
}
}
int main() {
int A[][3] = {
{1,2,3},
{4,5,6},
{7,8,9},
{10,11,12}
};
printArray(3, A, 4);
return 0;
}
Предположительно, это можно сделать с помощью C99, а также упомянутого в этот вопрос, но я не могу понять, как это сделать с С++.