例子:
class Animal {
public:
int age;
class Dog {
int a;
Dog() {
int a=5;
age = a;// ERROR
}
};
};
“年龄变量不存在”。
对于继承的类,一切都很清楚它们如何与基类进行交换。但是当类不是继承的,而是内部的时呢?在主类中声明。
例子:
class Animal {
public:
int age;
class Dog {
int a;
Dog() {
int a=5;
age = a;// ERROR
}
};
};
“年龄变量不存在”。
对于继承的类,一切都很清楚它们如何与基类进行交换。但是当类不是继承的,而是内部的时呢?在主类中声明。
简单地将一个类的定义放在另一个类中不会以任何方式绑定这些类的实例(对象)。为了访问
age类字段Animal,内部类Dog必须知道使用哪个实例。例如,这可以通过将指向此类实例的引用/指针传递给构造函数来完成:事实上,将一个类的定义放在另一个类中只会延长嵌套类的完全限定名,即 在外部代码中它不会
Dog,但是Animal::Dog。一个额外的嵌套类可以访问父类的非公共字段,但是为了使用它们,您仍然需要知道这个父类的实例(具体对象)。