C에서 서로 인스턴스를 공유하는 클래스 생성
C에서 두 개의 클래스를 생성하려고 할 때 각 클래스에는 다음 객체가 필요합니다. 다른 클래스를 멤버로 사용하면 컴파일 오류가 발생할 수 있습니다. 이는 직접 개체를 포함하면 메모리 할당에서 무한 루프가 발생하기 때문입니다.
해결책: 포인터를 클래스 멤버로 사용
이 문제를 피하려면 포인터를 직접 개체 대신 클래스 멤버로 생성하세요. 이 접근 방식에는 전체 정의를 제공하지 않고 클래스의 존재를 알리는 전방 선언이 포함됩니다.
In bar.h:
#ifndef BAR_H #define BAR_H class foo; // Forward declare foo class bar { public: foo* getFoo(); protected: foo* f; }; #endif
In foo.h:
#ifndef FOO_H #define FOO_H class bar; // Forward declare bar class foo { public: bar* getBar(); protected: bar* f; }; #endif
해당 .cpp 파일에 다른 클래스의 헤더를 포함합니다.
// foo.cpp #include "foo.h" #include "bar.h" // bar.cpp #include "bar.h" #include "foo.h"
이 접근 방식은 순환 참조 루프를 깨고 포인터를 통해 서로의 인스턴스를 활용하는 클래스를 생성할 수 있습니다.
위 내용은 C에서 서로의 인스턴스를 공유하는 클래스를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!