Get&Set

class Show
{
public:
f32 GetValue()const { return mValue; }
void SetValue(f32 v) { mValue = v; }
protected:
f32 mValue;
};
 

这种加get&set的理由也是充分:

  • 对读写有控制,写这个类的人可以有充分的控制权
  • 对数据的访问可以很方便的做检测
  • 封装。。。

但是不好的地方就是写一个成员进去,要敲太多东西,浪费时间不说,类看起来臃肿。

之前有个解决办法是:

#define MEMBER(type, name)          public:                                             /
                                    const type& Get##name##()const { return m##name; }  /
                                    void        Set##name##(const type& v) { m##name=v; }/
                                    protected:                                          /
                                    type        m##name;                                
#define MEMBER_READONLY(type, name)          public:                                    /
                                             const type& Get##name##()const { return m##name; }  /
                                             protected:                                          /
                                             type        m##name;                                /

#define MEMBER_WRITEONLY(type, name)            public:/
                                                void Set##name##(const type& v) { m##name=v; }/
                                                protected:/
                                                type        m##name;    
 

直接就是一个member一行,简单清晰,而且读写控制都非常的清楚。

 

But...

VA的自动补全没法识别macro弄出来的函数。。。

所以如果在自动补全识别能力很强的情况下,可以考虑这个,否则就还是老老实实的用注释标记出来“此为垃圾区”然后不停的写get&set吧。

 

哪位仁兄对此有好的解决方案麻烦告知一声,谢谢。


原文链接: http://blog.csdn.net/ccanan/article/details/5836354

你可能感兴趣的:(Get&Set)