C++ 使用 property 屬性 的方法

xxx! 這是windows下的! 一萬隻草泥馬跑過。

這幾天在項目中碰到一個問題:
A是頂層的對象,有一個成員變量是系統參數p。
B是A對象的成員的成員,B負責通信。B在通信時,會使用到參數p。

第一個最直接的方案是:將A對象p的指針直接傳遞給B。
這樣的話,固然可以很直接讀取p,但是不僅可以讀取p,也可以修改p。大問題是沒有什麼問題。
但是

  1. 如果出現”==”寫成”=”的情況的話,相對來說不好查。
  2. 我tm有代碼潔癖。
  3. 以後擴展的話,我自認爲比較好。

方案二:
將p設置爲private,然後在聲明一個public的get方法,一個private的set方法。
升級版是比較吊,但是同時我想到了其他語言裏面的property 屬性。

然後想了一下C++好像沒接觸過屬性,google了一把。

然後
方案三:

MSDN屬性

struct S {  
   int i;  
   void putprop(int j) {   
      i = j;  
   }  

   int getprop() {  
      return i;  
   }  

   __declspec(property(get = getprop, put = putprop)) int the_prop;  
};  

int main() {  
   S s;  
   s.the_prop = 5;  
   return s.the_prop;  
}  

大概例子就是這樣,就是這個套路

__declspec(property(get = getprop, put = putprop)) int the_prop; 

大概就是這樣 如果有錯誤,麻煩您指正。謝謝。

哪位路過的大哥給個解方案,我現在只能用方案2了。

只能說
山窮水盡疑無路,柳暗花明又一村。
踏破鐵鞋無覓處,得來全不費工夫。
衆裏尋他千百度。驀然回首,那人卻在,燈火闌珊處。

我大QT自帶屬性!

發佈了50 篇原創文章 · 獲贊 38 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章