内部类可以访问私有变量吗?

class Outer {


    class Inner {

    public:

        Inner() {}

        void func() ;

    };


private:

    static const char* const MYCONST;

    int var;

};


void Outer::Inner::func() {

    var = 1;

}


const char* const Outer::MYCONST = "myconst";

当我使用类Outer :: Inner'编译时,这个错误输出没有名为`var'的成员


皈依舞
浏览 735回答 3
3回答

杨__羊羊

内部类可以访问外部类的所有成员,但它没有对父类实例的隐式引用(与Java的一些奇怪之处不同)。因此,如果将对外部类的引用传递给内部类,它可以引用外部类实例中的任何内容。

红颜莎娜

var不是内部类的成员。要访问var,应使用指向外部类实例的指针或引用。例如,如果内部类是外部的朋友,则pOuter-> var将起作用,如果严格遵循C ++标准,则var是public。有些编译器将内部类视为外部的朋友,但有些可能不是。有关IBM编译器,请参阅此文档:“嵌套类在另一个类的范围内声明。嵌套类的名称是其封闭类的本地。除非使用显式指针,引用或对象名称,否则嵌套类中的声明只能使用可见的构造,包括封闭类和全局变量中的类型名称,静态成员和枚举器。嵌套类的成员函数遵循常规访问规则,并且对其封闭类的成员没有特殊的访问权限。封闭类的成员函数对嵌套类的成员没有特殊的访问权限。“
打开App,查看更多内容
随时随地看视频慕课网APP