2011-04-23 4 views
0

클래스의 멤버가있는 클래스를 만들려고하는데 클래스를 둘러싸고 있지만 클래스에 불완전한 유형이 있다는 오류가 발생합니다. 여기에 예제가 있습니다필드에 불완전한 유형이 있습니다. C++

class List { 
public: 
     List (int element, List rest) { 
       _first = element; 
       _rest = rest; 
     } 
. 
. 
. 
} 

이 문제를 해결할 방법이 있습니까?

+3

어떻게'_rest'가 선언 되었습니까? –

답변

2

사용이 :

'rest'List에 대한 포인터해야한다.

5

당신은 우리에게 List의 완전한 정의를 부여하지 않은,하지만 난 당신이 같은이 당신의 설명에서 같은데요 :

class List 
{ 
    ... 
    List _rest; 
}; 

물론, 이것이 불가능합니다. 객체는 자체 유형의 멤버를 포함 할 수 없습니다. 이렇게하면 무한 재귀가 발생할 수 있습니다!

아마도 포인터 또는 참조 인 회원을 원하십니까?

+0

글쎄, 나는 그것이 '명백한'방법인지 모르겠다. 불가능한 일이 아니며 멀티 패스 컴파일러를 가진 많은 언어들이 그러한 것을 허용한다. –

+1

@Ed - 다중 패스와는 아무 관련이 없지만 데이터를 저장하는 방법입니다. 내부 목록에 내부 목록이있는리스트의 크기는 무엇입니까? –

+0

@Bo Persson : 당신 말이 맞아요, 다중 패스와 아무 상관이 없으므로 회원 분명히 (지적 된대로) 포인터 여야합니다. 내가 그 코멘트를 삭제 한 줄 알았는데 ... –

관련 문제