>백엔드 개발 >C++ >전방 선언을 사용하여 C에서 상호 의존 클래스를 만드는 방법은 무엇입니까?

전방 선언을 사용하여 C에서 상호 의존 클래스를 만드는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-23 20:44:15985검색

How to Create Interdependent Classes in C   Using Forward Declarations?

순방향 선언을 통해 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.