c++在嵌入类中定义上层类的实例

发布时间 2023-04-22 11:28:27作者: windtail

问题是这样的,嵌入类挺好的,可以有效表明类之间的从属关系,我们常常这样

class A {
public:
   class Attr {
   private:
     A& mA;
   };
};

这样是没有问题的,因为A此时还没有完全定义,使用引用或指针都是可以的。

但是有些时候,如果A对象是一个临时对象,但我们想让Attr对象可以独立于A对象存在,这样Attr对象直接持有A对象就可以了。但是把上面的A&,改为A是编译不过的。

解决方案来了,原来嵌入类也可以前向声明,然后定义在外面,这样

class A {
public:
    class Attr;
};

class A::Attr {
private:
    A mA;
};