선언 된 클래스 외부의 내부 클래스를 정의하는 데 문제가 있습니다.두 레벨 중첩 된 C++ 클래스는 GCC와 함께 작동하지만 Clang과 함께 실패합니다.
struct Base {
struct A {
struct B;
};
struct A::B {
};
};
그것은 컴파일하고 GCC와 함께 작동하지만이 오류와 함께 연타에 실패
innerclass.cpp:6:12: error: non-friend class member 'B' cannot have a qualified name
struct A::B {
~~~^
가장 바깥 쪽 클래스베이스 코드가 연타 작동 생략됩니다.
이런 식으로 내부 클래스를 정의하는 것은 불법입니까? 그렇다면 어떻게해야합니까?
플랫폼 :
OS X 10.8.3
엑스 코드 4.6.2
연타 애플 LLVM 버전 4.2 (그 소리-425.0.24)
GCC의 GCC 버전 (LLVM의 3.2svn 기준) 4.2.1 (기반 Apple Inc. build 5658) (LLVM 빌드 2336.11.00)