关于c++嵌套类的使用
PHPz
PHPz 2017-04-17 11:07:30
0
2
741
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的定义的,为什么能编译通过呢?

PHPz
PHPz

学习是最好的投资!

全部回覆(2)
PHPzhong

猜測你是提供了operator[]函數,並返回了ConArray * 而Array::ConArray的類權限是public的,所以可以在外部看見類定義

但是Con_Array本身并没有写
{
public:
void printAll();
}

那麼我就不知道你怎麼會編譯通過的。。。

大家讲道理

如果a[0]返回的是Con_Array類型,就可以調用其中的printAll方法
在C 裏嵌套類,除了在使用時要帶上Parent::Class的頭以外,其他和普通類用起來沒任何區別

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板