0

Visual Studio 2010 で小さな C++ Windows フォーム プロジェクトを実行しています。コードが大きくなりすぎているため、header.h ファイルにいくつかの関数を含めることにしました。私の問題は、多次元配列を受け取る/返す関数を作成する方法がわからないことです。どんな助けでも大歓迎

4

1 に答える 1

1

マネージ配列の場合、次元をarrayキーワードの 2 番目のテンプレート パラメーターとして指定できます。

void TakesArray(array<Object^, 2>^ a)
{
    ...
}

array<Object^, 2>^ ReturnsArray()
{
}

生のアンマネージ配列の場合は、少し複雑です。配列を取得すると、次のようになります。

void TakesArray(SomeType a[5][10])
{
}

ただし、これは実際には次と同等であることに注意する必要があります。

void TakesArray(SomeType (*a)[10])
{
}

これは、実際には 10 個の要素の配列へのポインタを取ることを意味します。また、2 番目の次元 (さらに追加する場合はより高い次元) のサイズは型の一部ですが、最初の次元のサイズは型の一部ではないことも意味します。これは、2 次元で呼び出すことができることを意味します。 2 番目の次元のサイズは 10 でなければならず、1 番目の次元は任意のサイズにすることができる配列。

生の管理されていない配列を返すことは、さらに奇妙です。

void (*ReturnsArray())[10]
{
}

とにかく、その構文を使用する必要はめったにありません (それが珍しい理由です)。より良い方法は、std::vector などの配列クラスを使用することです。

void TakesArray(const vector<vector<SomeTipe>>& v)
{
}

vector<vector<SomeType>> ReturnsArray()
{
}

技術的には、これは多次元配列ではなく、配列の配列ですが、多次元配列のように使用できます。

于 2013-02-15T05:18:44.987 に答える