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的一些奇怪之处不同)。因此,如果将对外部类的引用传递给内部类,它可以引用外部类实例中的任何内容。
红颜莎娜
TA贡献1842条经验 获得超12个赞
var不是内部类的成员。
要访问var,应使用指向外部类实例的指针或引用。例如,如果内部类是外部的朋友,则pOuter-> var将起作用,如果严格遵循C ++标准,则var是public。
有些编译器将内部类视为外部的朋友,但有些可能不是。有关IBM编译器,请参阅此文档:
“嵌套类在另一个类的范围内声明。嵌套类的名称是其封闭类的本地。除非使用显式指针,引用或对象名称,否则嵌套类中的声明只能使用可见的构造,包括封闭类和全局变量中的类型名称,静态成员和枚举器。
嵌套类的成员函数遵循常规访问规则,并且对其封闭类的成员没有特殊的访问权限。封闭类的成员函数对嵌套类的成员没有特殊的访问权限。“
- 3 回答
- 0 关注
- 734 浏览
添加回答
举报
0/150
提交
取消