2016-03-27 1 views
1

ここに示されているように文字列が構造内で定義されている値付け:他の関数の内部 予め定義された2-Dのchar配列は

struct munchkin_grid_type 
{ 
    char grid[5][5]; 
}; 

は、変数は、この新しいタイプとして定義され、そして欲しいですその中に文字列がいっぱい:

munchkin_grid_type munchkin_grid; 

munchkin_grid.grid[5][5] = 
{ 
     { 'a', 'b', 'c', 'd', 'e' }, 
     { ' ', ' ', ' ', ' ', ' ' }, 
     { ' ', ' ', ' ', ' ', ' ' }, 
     { ' ', ' ', ' ', ' ', ' ' }, 
     { '1', '2', '3', '4', '5' } 
}; 

は私が得るエラーは以下のとおりです。

  • エラーC2440: '=':あちこちに変換することはできません。 「シャア

  • のIntelliSenseにM「初期化子リスト」:あまりにも多くの初期化子が

私はSTDに頼ることなく、この2次元配列内のこれらの値を入れてやる方法::配列/ベクトル値タイプ?私はちょうど正常な2D文字配列が欲しいです。

答えて

1

代わり

munchkin_grid_type munchkin_grid; 

munchkin_grid.grid[5][5] = 
{ 
    { 'a', 'b', 'c', 'd', 'e' }, 
    { ' ', ' ', ' ', ' ', ' ' }, 
    { ' ', ' ', ' ', ' ', ' ' }, 
    { ' ', ' ', ' ', ' ', ' ' }, 
    { '1', '2', '3', '4', '5' } 
}; 

munchkin_grid_type munchkin_grid = 
{ 
    { 
     { 'a', 'b', 'c', 'd', 'e' }, 
     { ' ', ' ', ' ', ' ', ' ' }, 
     { ' ', ' ', ' ', ' ', ' ' }, 
     { ' ', ' ', ' ', ' ', ' ' }, 
     { '1', '2', '3', '4', '5' } 
    } 
}; 

EDITを行います - これの基礎を説明するように頼んだ。

本質的に、これはイニシャライザを持つ単一のstruct named munchkin_gridの定義です。それを理解するには、中括弧から外してください。チャーの

単一のアレイは、charの二次元アレイは、{}の別のネスティングを導入

char x[5] = {'a', 'b', 'c', 'd', 'e'}; 

ようなものを初期化することになります。

5x5では、初期化のためにどのようにディメンションが実行されるかがわかりにくいため、最初のディメンションを変更しました。ディメンションがスワップされている場合は、イニシャライザも変更する必要があります。

char y[5][2] = { 
    {'a', 'b'}, 
    {'c', 'd'}, 
    {'e', '1'}, 
    {'2', '3'}, 
    {'4', '5'} 
    }; 

そして、構造体の初期化は、上記のようにmunchkin_gridのための初期化子を取得するために{}の別のレベルを追加します。

+0

ありがとうございます。これで問題は解決しました。それがなぜ機能するのか説明できますか? – Akrilla

+0

ええ、大丈夫、私はすぐに簡単な説明で編集します。コメントに入れるには長すぎます。 – Peter

-1

コードmunchkin_grid.grid[5][5] =は配列の要素にアクセスしています(あなたは別の言語と構文を混同している可能性があります...)[5][5]を削除すると問題が解決するはずです。

EDITは:次のコードは、(少なくとも、それがどのIntelliSenseのエラーを生成していません。)動作するはず

#include <array> 
struct munchkin_grid_type 
{ 
    std::array<char, 5> grid[5]; 
}; 

munchkin_grid_type munchkin_grid; 

munchkin_grid.grid[0] = {'a', 'b', 'c', 'd', 'e' }; 
munchkin_grid.grid[1] = { ' ', ' ', ' ', ' ', ' ' }; 
munchkin_grid.grid[2] = { ' ', ' ', ' ', ' ', ' ' }; 
munchkin_grid.grid[3] = { ' ', ' ', ' ', ' ', ' ' }; 
munchkin_grid.grid[4] = { '1', '2', '3', '4', '5' }; 
+0

いいえ、問題は解決しません。すでに宣言されている配列を初期化(初期化子リストを使用して)することはできません。 – DimChtz

+0

@DimChtz現在はどうですか? – Isaac

+0

あなたはそれを行うことができます。まだ間違っています – DimChtz

関連する問題