1

関数で 2 次元配列を返す方法を知りたいと思っていました。私のコードは次のようなものです:

int[][] function ()
{
    int chessBoard[x][x];
    memset(chessBoard,0,x*x*sizeof(int));
    return chessBoard;      
}

最初の行に「エラー: '[' トークンの前に予期しない非修飾 ID」というエラー メッセージが表示されます。関数を適切に動作させる方法に関するヒントはありますか?

4

2 に答える 2

0

残念ながら、関数から配列を返すことはできません。規格に明確に記載されています。

C++11 標準 § 8.3.5 関数

関数は、型配列または関数の戻り値の型を持ちませんが、型ポインターまたはそのようなものへの参照の戻り値の型を持つ場合があります。

しかし、最新の C++ プラクティスでは、STL コンテナーを使用して、混乱を招く構文とメモリ割り当てを容易にすることをお勧めします。特定のセットアップでは、C スタイルの配列を次のように置き換えることができますstd::vector

std::vector< std::vector<int> > function()
{
    return std::vector< std::vector<int> >(x, std::vector<int>(x));
}
于 2013-05-12T12:48:55.473 に答える