方案一二,考虑的前提是A类不为抽象类。如果A类为抽象类的话,A类就不能实例化。
方案一:将A类的构造函数和析构函数声明为private,将B类声明为A类的友元
class B;
class A
{
friend B;
private:
A();
~A();
};
A(){}
~A(){}
class B
{
public:
A m_a;
};
方案二:将A类声明为B类的嵌套类,并将A类声明为B类的private。
class B
{
private:
class A
{
};
public:
A m_a;
};