2013-07-07 5 views
1

값을 포인터에 할당하려고 할 때 오류가 발생합니다.포인터의 역 참조 문제

나중에 코드
typedef struct { 
    struct player *next; //pointers 
    struct player *prev; 
} player; 

typedef struct { 
    player onMe; //object 
} field; 

, I는 구조체 "플레이어 P"의 인스턴스를 생성하고 사용하려고 :

는 I 2 구조체를 정의 필드 [] []가 보유하는 배열 인 형식 필드의 구조체. "불완전한 유형으로 역 참조 포인터 오류" 나는 또한 시도 (& p.next)하지만 같은 결과가 내가 얻을 이러한 경우

fields[p.x][p.y].onMe = *(p.next); 
(*p.prev).next = &p.next; 

. 이 경우

fields[x][y].onMe.prev = (&p); 

내가 얻을 "경고 : 기본적으로 사용] 호환되지 않는 포인터 타입의 할당을"

은 누군가가 내가 잘못 뭘하는지 말해 줄래?

답변

0

struct player을 선언하지 않으므로 구조체의 정의가 불완전합니다. 시도해보십시오

typedef struct player_s { 
    struct player_s *prev; 
    struct player_s *next; 
} player; 
+1

트릭을 멋지게했습니다. 고마워요 :) –

0

이유는 struct player이 불완전한 유형이기 때문입니다. typedef으로 player 유형을 선언하십시오. 그러나 struct player을 사용 했으므로 현재 정의되지 않았거나 다른 곳에서는 정의되지 않았습니다.

당신은

typedef struct player { 
    struct player *next; //pointers 
    struct player *prev; 
} player; 
+1

제발, 여기 -1 설명. –

+0

무엇 -1을 의미합니까? –

+0

누군가 내 대답을 downvote. –

0

당신이 array.onMe 한 또 다른 구조체를 가리키는 포인터를 할당하는 것이 가능하다 같은 것을 사용한다.
그런데 왜 ptr 주소를 다른 ptr에 할당합니까? 다음과 같이 다른 포인터에 포인트 된 포인터를 할당 할 수 있습니다.

(*p.prev).next = p.next