为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++
皈依舞 2019-09-02 15:33:02
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'的成员
查看完整描述

3 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

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


查看完整回答
反对 回复 2019-09-02
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

var不是内部类的成员。


要访问var,应使用指向外部类实例的指针或引用。例如,如果内部类是外部的朋友,则pOuter-> var将起作用,如果严格遵循C ++标准,则var是public。


有些编译器将内部类视为外部的朋友,但有些可能不是。有关IBM编译器,请参阅此文档:


“嵌套类在另一个类的范围内声明。嵌套类的名称是其封闭类的本地。除非使用显式指针,引用或对象名称,否则嵌套类中的声明只能使用可见的构造,包括封闭类和全局变量中的类型名称,静态成员和枚举器。


嵌套类的成员函数遵循常规访问规则,并且对其封闭类的成员没有特殊的访问权限。封闭类的成员函数对嵌套类的成员没有特殊的访问权限。“


查看完整回答
反对 回复 2019-09-02
  • 3 回答
  • 0 关注
  • 734 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信