1

私は多かれ少なかれこのパターンに従う構造を持っています:

struct sTruct {
   int count;
   struct {
       int A;
       int B;
       int C;
   } array[];   //count is the size of this array
};

これらを次の構文のようなもので初期化できるようにしたいと思います。

sTruct gInit1 = { 2, { {1,2,3},{4,5,6} }};

実際、その初期化構文 (というか、そのコンパクトさ) は、特定の構造体レイアウトよりも重要です。標準のコンテナー (組み込みプラットフォーム) にはアクセスできませんが、必要に応じてそれらの動作の一部を再現できる可能性があります。

最終的には、これらの sTruct コンテナーの約 300 個の配列を一度に初期化し、括弧をもう 1 レベル追加します。

4

1 に答える 1

7

あなたはそれをすることはできません。配列に可能なサイズを指定した場合。代替案は次のとおりです。

template < int size >
struct sTruct
{
  struct { int a, int b, int c } array[size];
};
sTruct<2> gInit1 = {{1,2,3},{4,5,6}};

しかし、もちろん、すべての sTruct は異なるタイプであるため、必要なものではない場合があります。他の唯一の代替手段は、フリーストアベースである必要があり、初期化リストが 0x になるまでその構文を提供しません。

于 2010-12-17T17:21:42.527 に答える