중첩 클래스 전방 선언
C에서는 컨테이너 외부에서 중첩 클래스를 전방 선언하는 것이 불가능합니다. 컴파일러는 포함 범위 내에서 중첩 클래스의 전체 정의를 요구합니다.
중첩 클래스가 있는 클래스가 있다고 가정합니다.
class Container { public: class Iterator { // ... }; // ... };
다른 클래스에서 Container::Iterator를 전달하려고 시도합니다. 헤더 파일을 사용하면 컴파일 오류가 발생합니다.
class Container::Iterator; class Foo { void Read(Container::Iterator& it); };
이유 제한 사항
컴파일러는 코드를 생성하기 전에 중첩 클래스를 포함한 클래스의 전체 구조를 알아야 합니다. 컨테이너 외부에 중첩 클래스를 선언하면 이 종속성이 깨집니다.
해결 옵션
이 제한을 우회하려면 다음과 같은 몇 가지 옵션이 있습니다.
이 지침을 따르면 중첩 클래스를 앞으로 선언할 때 코드가 성공적으로 컴파일되도록 할 수 있습니다.
위 내용은 컨테이너 외부에 중첩된 C 클래스 선언을 전달할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!