2013-07-01 2 views
1

다음 코드에서 typedef의 순환 종속성이있는 것 같다.이 문제를 해결할 수있는 방법이 있습니까? 이것은 내 문제를 단순화 한 표현입니다. typedef 문을 어디에 넣든 상관없이 올바르게 해석하기를 원하지 않습니다. 내 구조체가 당신보다 약간 다릅니다,하지만 여전히 점을 보여typedef를 올바르게 해결하는 방법을 모른다.

struct Item { 
    int id; 
    ItemList* ptrToList; 
} 

typedef std::list<Item> ItemList; 

답변

3

이 (MSVC2012에서 컴파일)처럼 당신은

struct Item; 
typedef std::list<Item> ItemList; 

struct Item 
{ 
    Item* item; 
    ItemList list; 
}; 

주를 해결할 수 있습니다.

+0

* 표시 작은 차이 * 당신이 기대하는 것 이상의 의미를 가지고 있습니다. 당신이 거기에 작은 변화와 정의되지 않은 동작을 만들지 않은 경우 확실하지 않다 ... 9.2/2 및 17.6.4.8/2 관련 인용문 –

1

당신은 유형의 이름을 선언 할 수

struct Item; 

가 그런 다음에 나머지를 조립한다.

0

사용 앞으로 선언 : 원본과

struct Item; 
typedef std::list<struct Item> ItemList; 
struct Item { 
    int id; 
    ItemList* ptrToList; 
}; 
관련 문제