是的,嵌套类在这里很好。
请注意,为了保持代码井井有条,我不会将 inside 的定义B
放在里面A
。反而:
class A
{
class B;
};
class A::B
{
};
除其他外,这允许将类的定义A::B
放在 A 的实现文件中。
编辑:由于嵌套类是否可以访问包含类的私有成员似乎有些混淆,我提供了一个代码片段来证明它确实如此:
class A
{
int x;
class B
{
int func(A* p) { return p->x; }
};
};
没有内联定义的变体A::B
,也被接受:
class A
{
int x;
class B;
};
class A::B
{
int func(A* p) { return p->x; }
};
您的 Comeau C/C++ 测试结果如下:
用于 ONLINE_EVALUATION_BETA2 的 Comeau C/C++ 4.3.10.1(2008 年 10 月 6 日 11:28:09) 版权所有 1988-2008 Comeau Computing。版权所有。模式:严格错误 C++ noC++0x_extensions
在严格模式下,使用 -tused,编译成功(但请记住,Comeau 在线编译器不会链接)。使用 C++0x 扩展编译已禁用。