//类A class A { ~A(); A(); }; //类B class B { ~B(); B(); private: A a; };
编译结果为
error: ‘A::~A()’ is private within this context
原因分析是因为类B调度类A时需要处理类A的构造方法和析构方法,但由于构造方法和析构方法均为默认为私有的,导致类B无法正常的调度类A,所以需要将构造方法和析构方法的权限设置为public(公有的).
class A { public: //修改为public权限 ~A(); A(); }; //类B class B { ~B(); B(); private: A a; };