나는 세 개의 클래스가 있습니다 : TopClass
에는 BottomClass
포인터의 인스턴스가 있습니다. BottomClass
에는 HelperClass
에 대한 포인터가 들어 있습니다. HelperClass
은 TopClass
에 대한 포인터를 유지합니다. 순환 의존성이 나타나고 HelperClass
에 전달 선언이 필요합니다. 전달 선언이 순환 종속성을 수정하지 않는 이유는 무엇입니까?
이 모든
다음과 같은 코드 조각에 예시되어있다 :#include "BottomLevel.h"
namespace foo
{
class TopLevel
{
private:
BottomLevel* item;
};
}
-
#include "HelperClass.h"
namespace foo
{
class BottomLevel
{
private:
HelperClass* item;
};
}
-
class TopLevel; // forward declaration here
namespace foo
{
class HelperClass
{
public
HelperClass(TopLevel* item);
};
}
구현 파일에서 일을하려고 할 때 문제가 온다 . cpp 파일에서 #include "TopClass.h"
이 발생하면 "과부하 된 멤버 함수를 찾을 수 없음 - 정의되지 않은 유형 'TopLevel
'"(오류 C2511 및 C2027) 사용과 같은 컴파일 오류가 발생합니다.
그럼 내가하지 않으면 #include
앞으로 선언 된 형식을 사용하려고하기 때문에 C2027 오류가 남아 있습니다.
이 문제를 해결할 수있는 방법이 있다는 것을 알고 있습니다. 이전에 해본 적이있을 것이라고 확신하지만, 내 인생에서 내가해야 할 일을 기억할 수는 없습니다. 어떤 도움을 주시겠습니까?
/마른 세수는 [당신이 포인터를 사용하기 때문에] – Anthony