class Array
{
// ...
public:
class Con_Array
{
void printAll();
};
private:
Con_Array *con;
};
在main中调用 :
Array a;
( a[0] ).printAll();
( a[0] )代表Array中的一个Con_Array实例,在main使用( a[0] )调用printAll()时为什么会通过,按理main中对Con_Array是不可见的。
我没说清楚,就是说a[0]是外部类所生成的一个内部类Con_Array对象,即con,问题是在main中我使用才·con来调用它的Con_Array的成员函数printAll()。在main中你看不到Con_Array的定义的,为什么能编译通过呢?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
猜测你是提供了operator[]函数,并返回了ConArray * 而Array::ConArray的类权限是public的,所以可以在外部看见类定义
那么我就不知道你怎么会编译通过的。。。
如果a[0]返回的是Con_Array类型,就可以调用其中的printAll方法
在C++里嵌套类,除了在使用时要带上Parent::Class的头以外,其他和普通类用起来没任何区别