如何訪問已被聲明爲static和類定義保護在另一個文件b.cpp在另一個文件中使用受保護的靜態變量
0
A
回答
2
允許使用protected
類的唯一代碼使用一個變量成員(靜態或不)是問題類的明確朋友和類從類中派生的問題(當然,類本身的成員)。因此,如果「你」想訪問該值,那麼「你」必須是該類的朋友或從它派生的類的成員。
存在保護等級(public
,protected
和private
)以提供數據保護。通過聲明成員爲protected
,那類作家正在大約應該被允許觸摸到了一塊內存什麼碼半強烈的聲明。如果你不是一個派生類或已獲准使用明確的friend
規範,那麼你不能碰它。
你不應該從一個類派生只是爲了獲得訪問protected
靜態成員。你應該只從派生類派生,如果它是有道理的,根據你的派生類正在嘗試做什麼。
0
在宣佈爲受保護,靜態變量只能用在它的成員函數訪問和它的派生類(公共,保護繼承)。
0
0
我曾經在一個我無法修改的課程中遇到了這個問題(標準適配器),並在Google的幫助下提出了以下解決方案!
#include <iostream>
class my_type{
protected:
static int var;
};
int my_type::var = 0;
int& get_var(my_type& obj){
class protected_accessor : my_type{
public:
static int& get_var(my_type&){
return my_type::var;
}
};
return protected_accessor::get_var(obj);
}
int main(){
my_type obj;
std::cout << get_var(obj) << std::endl;
get_var(obj) = 1;
std::cout << get_var(obj);
}
我在我的小工具中使用了此代碼的變體:https://bitbucket.org/AraK/streamer/wiki/Developer_FAQ。尋找「流媒體標準適配器」。
相關問題
- 1. PHP:引用靜態變量中的另一個靜態變量
- 2. 如何在Kohana中設置受保護的靜態文件3.1
- 3. 無法訪問受保護的靜態變量PHP 7.0.13
- 4. 試圖訪問另一個靜態變量的靜態變量
- 5. ASP.NET - 受保護的變量
- 6. 如何保護靜態函數/變量
- 7. 在另一個文件中使用另一個類的變量
- 8. 從受保護的子區訪問變量到另一個受保護的子區(asp.net)
- 9. 獲取從受保護的方法變量值另一類
- 10. 訪問受保護的變量在googletest
- 11. Fortran中受保護的全局變量
- 12. 實現文件中的實例變量 - 私有與受保護
- 13. 如何用另一個靜態變量初始化靜態變量?
- 14. ActionScript:在受保護/私有變量中使用'in'?
- 15. 在C99中使用靜態變量初始化靜態變量
- 16. 靜態函數在另一個文件
- 17. 在python中打開一個受保護的pdf文件
- 18. 模板類不從另一個模板類繼承受保護的變量
- 19. 使用C++類的靜態變量在多個文件
- 20. 訪問Android類的受保護變量
- 21. 如何使用WIF來保護對靜態文件的訪問?
- 22. 在另一個類中使用受保護的析構函數刪除對象
- 23. 從c中的另一個文件更新靜態全局變量
- 24. 頭文件中的靜態變量
- 25. 受保護變量和模型綁定
- 26. 更改另一個類中的靜態變量的值
- 27. 在另一個文件中使用變量的值
- 28. 在另一個需要的文件中使用變量
- 29. 同一類中的Java靜態變量和非靜態變量
- 30. 從Scala調用受保護的靜態Java方法