2014-10-16 4 views
0

링크 목록과 노드에 대해 배우려고하고 있는데 노드 구조체에이 오류가 있다는 것을 이해하지 못합니다. 이것은 내가하려고 할 때 지금헤더 파일에 문제가있는 전달 선언

#ifndef SENTENCE_H 
#define SENTENCE_H 

class Sentence; 

#include"paragraph.h" 
#include"word.h" 

class Sentence{ 
    public: 
     struct Node{ 
      Word data; 
      Node * next; 
     }; 
     //etc, etc 

로 변경 내게 필요한 기능의 프로토 타입을 추가 한 다음 헤더

#ifndef SENTENCE_H 
#define SENTENCE_H 

#include"word.h" 

class Sentence{ 
    public: 
     struct Node{ 
      Word data; 
      Node * next; 
     }; 
      //etc 
#endif // SENTENCE_H 

에 앞으로 선언하지 않고, 완벽하게 잘 작동하지만 코드 컴파일이 오류가 발생합니다 : 필드 '데이터'불완전한 형식이 있습니다. 구조체를 모두 주석 처리하면 모든 것이 잘 동작합니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 이것이 노드를 만드는 올바른 방법이라고 생각합니까? 아닙니다. 문장에서와 마찬가지로 단어가있는 노드의 링크 된 목록이 있습니다. 따라서 '데이터'는 워드이고 다음은 노드에 대한 포인터입니다. Word 형식은 include 문으로 인해 허용되어야합니다. 함수 원형 "Word first();에 아무런 문제가 없습니다." 코드의 기타 부분에서 '데이터'에 불완전한 유형이 있다고 말하는 이유는 무엇입니까?

+0

왜 자신의 헤더 파일에 문장을 선언 하시겠습니까? – DaveyLaser

+0

범인은 분명히 '워드'입니다. 그러나 당신은'Word'가 어떻게 선언되는지를 보여주지 않습니다. 어떻게 선언됩니까? – AnT

+1

내 paragraph.h가 Sentence 클래스에 대해 알아야하기 때문에 @laser_wizard –

답변

1

내 수정 구슬은 귀하의 문제가 전방 선언 및 원형 헤더 포함과 관련이 없음을 알려줍니다. 동일한 공은 어떤 점에서 word.hsentence.h을 직접적으로 또는 간접적으로 포함하기 시작했다고합니다. 이제 sentence.hword.h이 포함되어 있으므로 순환 포함 루프가 생성되었습니다.

이상한 "설명 할 수없는"컴파일 오류 외에도 원형 포함은 아무 것도 달성하지 못합니다.

관련 문제