解决友元类(friend class)无法继承的问题
友元声明friend class是无法继承的。举例说明:class A声明class B为其友元类,也就是说class A授予class B访问class A的所有包括私有成员在内的所有成员。如果class C 继承class B.那么class C是不具备这种特权的。
但是如果我想在class C中访问class A的某个私有或者保护成员函数怎么办?
我们可以把工作交给父类。
#include <iostream> using namespace std; class B; class A { friend B; public: A(){}; ~A(){} protected: void Operation(){ cout << "Hello, I am here." << endl; } private: }; class B { public: B(){}; ~B(){}; virtual void Operate() { a.Operation(); } private: A a; }; class C: public B { public: C(){} ~C(){} private: }; int main(void) { C c; c.B::Operate();//这里显示的调用父类的函数 }