我在声明它的类之外定义一个内部类时遇到问题。
struct Base {
struct A {
struct B;
};
struct A::B {
};
};
它编译并与 GCC 一起工作,但在 Clang 上失败并出现以下错误:
innerclass.cpp:6:12: error: non-friend class member 'B' cannot have a qualified name
struct A::B {
~~~^
如果最外面的类 Base 被省略,则代码适用于 Clang。
以这种方式定义内部类是否违法?如果是这样,应该怎么做?
平台:
OS X 10.8.3
XCode 4.6.2
Clang Apple LLVM 版本 4.2 (clang-425.0.24)(基于 LLVM 3.2svn)
GCC gcc 版本 4.2.1(基于 Apple Inc. build 5658)(LLVM build 2336.11。 00)