순방향 선언을 통해 C에서 상호의존 클래스 생성
C에서 각각 다음 객체를 포함하는 두 클래스 간의 관계를 어떻게 설정할 수 있습니까? 다른 수업 유형이요?
직접 개체 임베딩
안타깝게도 각 클래스의 객체를 다른 클래스에 직접 임베드하는 것은 불가능합니다. 이 순환 참조는 무한한 공간 요구 사항을 생성합니다.
해결 방법: 포인터 기반 관계
대신 포인터를 활용하여 이 관계를 설정할 수 있습니다. 순환 종속성을 깨기 위해 우리는 전방 선언을 사용합니다.
전방 선언
클래스 헤더(예: bar.h 및 foo.h)에서 다음을 선언합니다. 정의하지 않은 다른 클래스의 존재:
// bar.h class foo; // Declare that the class foo exists class bar { public: foo* getFoo(); protected: foo* f; };
// foo.h class bar; // Declare that the class bar exists class foo { public: bar* getBar(); protected: bar* f; };
이제 각 헤더는 전체 정의가 없는 다른 클래스.
클래스 구현
해당 .cpp 파일에는 전체 정의에 액세스할 수 있도록 다른 헤더를 포함합니다.
// foo.cpp #include "bar.h" // ... Implementations of foo methods
// bar.cpp #include "foo.h" // ... Implementations of bar methods
사용처 main()
마지막으로 main.cpp에서 클래스의 인스턴스를 만들 수 있습니다.
#include "foo.h" #include "bar.h" int main() { foo myFoo; bar myBar; }
이 전략을 사용하면 순환 참조 문제.
위 내용은 전방 선언을 사용하여 C에서 상호 의존 클래스를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!