2011-01-30 60 views
3

第三方庫的類包含受保護的成員。如果我們無法修改第三方庫的代碼,我該如何訪問它?如果我們無法修改該類,如何訪問受保護的成員?

+0

爲什麼要訪問它?爲什麼你知道它在那裏,首先呢?保護完成的原因是... – 2011-01-30 09:21:39

+0

C++頭文件將給出所有公共,受保護和私有方法的定義。 – 2011-01-30 09:23:23

回答

8

受保護的成員只能由類本身,子類或朋友類和方法訪問。訪問受保護成員的唯一方法是對該類進行子類化,然後使用您的子類來公開受保護的成員。

如:

class parent { 
    /* Other members */ 
    protected: 
    int foo(); 
} 


class child : public parent { 
    public: 
    int foo(); 
} 
3

你應該爲這個類製作一個特殊的包裝。只需繼承圖書館的類並獲得受保護成員的訪問權限即可。由於繼承,可以在下面的代碼中使用包裝類而不是基類。

1

您可以從派生類中訪問受保護的成員。

class A 
{ 
    protected: 
    int i; 
}; 

class B : public A 
{ 
    void func() 
    { 
    i; //valid 
    } 
}; 
相關問題