第三方庫的類包含受保護的成員。如果我們無法修改第三方庫的代碼,我該如何訪問它?如果我們無法修改該類,如何訪問受保護的成員?
3
A
回答
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
}
};
相關問題
- 1. 無法訪問受保護的成員
- 2. 無法訪問受保護的成員?
- 3. 如何訪問受保護的成員
- 4. 無法訪問受保護的類成員在派生類中
- 5. 無法訪問在'A'類中聲明的受保護成員
- 6. 如何訪問派生類中的受保護成員?
- 7. 爲什麼我無法從基類的實例訪問受保護的成員?
- 8. 免費訪問受保護的成員
- 9. 訪問受保護的成員
- 10. 錯誤訪問受保護的成員
- 11. 訪問klarna API的受保護成員
- 12. 訪問受保護的成員
- 13. 無法訪問受保護的成員「Foundation.NSDictionary.NSDictionary(System.IntPtr)」
- 14. 無法訪問受保護的成員...沒有
- 15. 無法訪問受保護的成員「object.MemberwiseClone()」
- 16. 無法訪問也是子類的子類中的受保護成員
- 17. 如何在無關的類中訪問受保護的方法?
- 18. Java:無法訪問擴展子類中超類的受保護成員
- 19. 訪問派生類中的類的受保護成員
- 20. 從派生類訪問基類的受保護數據成員
- 21. 受保護的類成員訪問有哪些問題?
- 22. 錯誤C2248:無法訪問在類中聲明的受保護成員
- 23. 如何讀出受保護的成員
- 24. C++ - 訪問基類的受保護/私有成員
- 25. 爲什麼要從外部類訪問受保護的成員?
- 26. Java通過受保護的getter訪問私有超類成員
- 27. 訪問受保護的成員[嵌套類]
- 28. 友元類不能訪問受保護的成員
- 29. 受保護的成員不能在派生類中訪問
- 30. C#在派生類中訪問受保護的成員
爲什麼要訪問它?爲什麼你知道它在那裏,首先呢?保護完成的原因是... – 2011-01-30 09:21:39
C++頭文件將給出所有公共,受保護和私有方法的定義。 – 2011-01-30 09:23:23