> 백엔드 개발 > C++ > 중첩된 C 클래스 선언을 어떻게 전달할 수 있나요?

중첩된 C 클래스 선언을 어떻게 전달할 수 있나요?

DDD
풀어 주다: 2024-12-04 09:16:11
원래의
645명이 탐색했습니다.

How Can I Forward Declare Nested C   Classes?

내부 클래스 전방 선언

정의 헤더 파일을 포함하지 않고 중첩 클래스를 참조하는 것이 바람직할 수 있습니다. 그러나 포함 클래스 외부에서 내부 클래스 선언을 전달하려고 하면 컴파일 오류가 발생할 수 있습니다.

다음 예를 고려하세요.

class Container {
public:
    class Iterator {
        ...
    };

    ...
};

class Foo {
    void Read(Container::Iterator& it);
};
로그인 후 복사

이 코드를 컴파일하면 불완전한 오류로 인해 오류가 발생합니다. 컨테이너 유형 및 선언되지 않은 컨테이너 유형 변수.

해결 방법

안타깝게도 포함 클래스 외부에서 내부 클래스를 선언하는 것은 불가능합니다. C 표준에서는 이 구문을 허용하지 않습니다. 따라서 이 문제를 해결하려면 대체 솔루션이 필요합니다.

  • 내부 클래스를 외부로 이동: 내부 클래스를 중첩되지 않은 클래스로 선언합니다. 이를 통해 앞으로 선언하고 별도로 포함할 수 있습니다.
  • 선언 재정렬: 가능하다면 내부 클래스가 참조되기 전에 완전히 정의되도록 클래스 선언의 재정렬을 수행하세요.
  • 기본 클래스 사용: 내부 클래스가 상속할 수 있고 함수가 매개변수로 전달할 수 있는 공통 기본 클래스를 만듭니다. 이를 통해 구체적인 내부 클래스 유형을 알 수 없는 경우에도 함수가 기본 클래스에 대한 참조를 허용할 수 있습니다.

위 내용은 중첩된 C 클래스 선언을 어떻게 전달할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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