类嵌套只是在另一个类中定义一个类,如下所示:
class A
{
public:
class B
{
public:
class C{};
};
};
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用范围运算符访问嵌套类,就像使用命名空间一样:
A a;
A::B b;
A::B::C c;
Run Code Online (Sandbox Code Playgroud)
现在当一个类包含另一个类的对象时,它是一个聚合:
class D
{
public:
A myA;
void do_something();
private:
A::B myB;
};
Run Code Online (Sandbox Code Playgroud)
然后,如果它是公开的,您可以访问该成员:
D d;
process( d.myA ); // access to myA
Run Code Online (Sandbox Code Playgroud)
如果它不可访问,那么您可以通过功能提供它.无论如何,在类函数内部,您可以直接访问该成员:
void D::do_something()
{
doit( myB );
// or
doit( this->myB );
}
Run Code Online (Sandbox Code Playgroud)