2017-11-06 5 views
-2

혼란스러운 제목으로 불편을 드려 죄송합니다. 제 질문에 더 좋은 방법을 생각할 수 없습니다.원본 파일을 포함하여 파일에서만 선언 된 개체 사용

Foo.cpp 파일에 선언 된 클래스 Foo이 있습니다.

Foo.cpp 그러나 파일 Bar.h을 포함하고 클래스 BarFoo 개체의 새 인스턴스를 만들려고합니다. 물론 정의되지 않은 식별자 오류가 발생합니다. 각 정적 멤버에 액세스해야하기 때문에 각 파일에 두 헤더를 모두 포함해야합니다.

이 기능을 구현할 수있는 방법이 있습니까?

예 : Foo.h

#ifndef FOO_H 
#define FOO_H 

#include "Bar.h" 

class Foo 
{ 
public: 
    Foo() 
    { 
     _newNum = Bar::_num; 
    } 
private: 
    int _newNum 
}; 

Bar.h

#ifndef BAR_H 
#define BAR_H 

#include "Foo.h"  

class Bar 
{ 
public: 
    static int _num; 

private: 
    Foo f; // Error occurs here, Foo is undefined according to Foo.h. 
}; 

편집 : 아 미안 매우 잘못 작성된 질문. 나는 매우 피곤하다고 느낍니다. 결정된.

+0

클래스 선언 후 세미콜론 (';')이 누락 되었습니까? 또한 왜'Foo.h'와 함께'Bar.h'를 포함하고 그 반대도 포함합니까 ?? – user0042

+3

'Foo'는'Foo'를 사용해야하는'Bar'가'Bar.h'를 포함하는 이유는 무엇입니까? 이것은 단순히 잘못된 길일 것 같습니다 – UnholySheep

+0

오류를 수정 해 주셔서 감사합니다. – chickenwingding

답변

1

예제가 간다면 Foo.h가 Bar.h를 #include 할 이유가 없습니다.

를 해결하려면 :

#include "Foo.h" 

을 Bar.h의 상단에 경비원을 포함 아래.

+0

불충분하게 작성된 질문에 대해 사과드립니다. 나는 그것을 업데이트했다. – chickenwingding