2016-07-10 10 views
-1
struct Marker 
{ 
static int self_unum; 
static int mark_unum; 
static bool is_marking; 
static int last_mark_cycle; 
}; 
static Marker Team[11]={ {0,0,false,0} }; 

エラー: /home/d/Documents/alice/src/Miracle_Mark_System.cpp:32:エラー: 'マーカー' 静的マーカーチームのためにあまりにも多くの初期化子[11] = {{0,0、偽、 0}}; ^^も構造体配列の初期化子ですか?

        ^          
+5

なぜすべてが静的であるの?これは意味がありません。 – tkausl

+0

私のプロジェクトでは、履歴データを保存するために静的numが必要です –

+0

@ user5244032静的データが必要な場合は、忘れずにそれを使用しますが、 'Marker'のすべてのインスタンスが共有します。個々の 'Marker'インスタンスのプロパティはインスタンスメンバでなければなりません(静的ではありません)。また、1つの命名規則に従うことをお勧めします(つまり、CamelCaseとunderscore_caseを混在させずに一致させる)。さらに、大文字のクラス/構造体名を使用している場合は、変数に大文字を使用しないでください。チームを表す 'Marker'型の配列はおそらく'チーム 'と呼ばれるべきです(小文字の' t'と複数の 's'接尾辞を書き留めます)。 – linguamachina

答えて

4

インスタンスとは対照的にstaticキーワードは、クラスを定義するために使用される、メンバー。これは、それらがMarkerの特定のインスタンスに添付されていないシンボルであり、instanceName.instanceMember(例:Team[0].self_unum)ではなく、ClassName::classMember(たとえばMarker::self_unum)の構文を使用してアクセスされていることを意味します。

したがってMarkerはフィールドがない構造体なので、エラーが発生します。

フィールド宣言から無用staticキーワードの削除:

struct Marker 
{ 
    int self_unum; 
    int mark_unum; 
    bool is_marking; 
    int last_mark_cycle; 
}; 
+0

ありがとうございます、あなたは正しい答えを得ます –

+0

静的メンバーにはオブジェクトを介してアクセスできます。 ( 'instanceName.instanceMember'のように。 – SergeyA

関連する問題