2017-01-14 8 views
0

配列でもポインタでもベクトルでもない私がbool配列として「設定」を定義するためのtypedefを使用しています:エラー:添字値はブール配列に

typedef struct set{ bool Arr[128]; }set;

問題は、すべての時間は、私がしようということです/ f値で代入する

temp[itemp]=true; 

(TEMPが定義されている「設定」で、ITEMPがintである) 私はエラーを取得する:

添字値は、私はこの問題を解決する方法が分からないでもない配列でもポインタでもベクトル です、 助けてください。 PS:私はubuntuでCを使用しています

+0

[最小限で完全であり、検証可能な例](http://stackoverflow.com/help/mcve)を作成してください。また、実際のエラーを未編集で完全に質問の本文にコピー・ペーストします。 –

+0

"* nor vector *" Cにはベクトルがありません。このエラーメッセージはCコンパイラによって発行されていませんでした。どのコンパイラを使用していますか? – alk

+1

私は、 'typedef bool set [128];ではなく、ここで' struct'を使用している唯一の理由があると仮定しています。なぜなら、関数のパラメータリストを渡って値で 'set'を渡すことができないので、 2つの 'set'オブジェクトを直接割り当てることもできません。これらのもっともらしい理由を考えると、メンバーArrがあなたの代入文で何らかの役割を果たしているという事実を見逃してしまったことに私は腹を立てています。 – WhozCraig

答えて

0

エイリアスはそれがメンバーArrにアクセスするには、128のサイズこれは、とboolsの配列を含む構造体へsetと呼ばれるものをあなたがやった、あなたは、メンバーアクセス演算子を使用する必要があります.

temp.Arr[itemp] = true; 

あなたがいることをしたくない場合は、あなたがそうのような配列のtypedefすることができます:ので、のようなので、あなたはDIRECそれにアクセスすることができます

typedef bool set[128]; 

をtly:

set s = { false }; 
s[1] = true; 
1

tempは、配列ではなくセットです。だから、それは添字にすることはできません。セット内の配列にアクセスする必要があります。

temp.Arr[itemp] = true; 
+0

ありがとうございました!問題はXD –

+0

を解決するのは簡単でした:) – letmutx

関連する問題