> 백엔드 개발 > C++ > 서로 상호 참조하는 두 개의 C 클래스를 만드는 방법은 무엇입니까?

서로 상호 참조하는 두 개의 C 클래스를 만드는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-11-10 08:16:02
원래의
713명이 탐색했습니다.

How to Create Two C   Classes that Mutually Reference Each Other?

서로 참조하는 두 클래스

각각 다른 유형의 객체를 직접 포함하는 두 개의 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿