서로 참조하는 두 클래스
각각 다른 유형의 객체를 직접 포함하는 두 개의 C 클래스를 생성하는 것은 다음과 같은 이유로 불가능합니다. 순환 참조 문제. 그러나 해결 방법은 포인터를 사용하여 서로를 참조하는 것입니다.
전방 선언 및 포인터 사용
이를 달성하려면 헤더 파일에서 전방 선언을 사용하여 정의하지 않고 다른 클래스가 존재하는 경우:
// bar.h class foo; // Say foo exists without defining it. class bar { public: foo* getFoo(); protected: foo* f; };
// foo.h class bar; // Say bar exists without defining it. class foo { public: bar* getBar(); protected: bar* f; };
그런 다음 해당 클래스에서 .cpp 파일에 다른 헤더를 포함하여 클래스를 완전히 정의합니다.
// bar.cpp #include "foo.h" foo* bar::getFoo() { return f; }
// foo.cpp #include "bar.h" bar* foo::getBar() { return f; }
이 접근 방식은 순방향 선언을 통해 클래스가 헤더를 포함하지 않고도 서로의 존재를 인식할 수 있으므로 순환 참조 루프를 깨뜨립니다. 객체의 무한한 공간 문제를 방지합니다.
위 내용은 서로 상호 참조하는 두 개의 C 클래스를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!