0

この関数はここで何度か質問されていますが、特定のケースに興味があります。渡された配列のサイズを追加の引数で定義することは可能ですか?

例として、2D 配列を出力する関数が必要だとしましょう。ただし、配列の次元が毎回同じであるとは限りません。追加の引数でその配列のサイズを定義できると理想的です。必要に応じてここで番号を簡単に切り替えることができることは承知してい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で実行でき、この質問でも言及されていますが、C++でどのように行うかわかりません。

4

1 に答える 1