2016-07-10 11 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'인스턴스의 속성은 인스턴스 멤버 (정적이 아님) 여야합니다. 또한 하나의 이름 지정 규칙을 따르는 것이 좋습니다 (즉, 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