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自带属性!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值