解決友元類(friend class)無法繼承的問題
解決友元類(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();//這裏顯示的調用父類的函數 }
最後更新:2017-04-02 06:51:39