|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#ifndef MACRO_PARAMS_H
#define MACRO_PARAMS_H
#define PARAM_SET(type, name, qualifier, setqualifier)\
qualifier: type m_##name;\
setqualifier: inline void set##name(type name) {m_##name=name;}
#endif
上面的程序,谁给解释一下,实在看不懂;
中间的##是什么鬼?
还有以上是定义,我看在另一个程序中是这样用的:
PARAM_GET(double, xmin, protected, public);
这段代码是一个快速创建 getter/setter 的工具
## 操作符的作用是把其前后(两个操作数)经过参数替换之后得到的结果相连来生成一个新的标识符。按此,解释一下调用的含义(调用使用的是 PARAM_GET ,猜测是用来定义 getter 的,而上面的是 PARAM_SET ,不过二者应该非常相似,这里把它们都当成 PARAM_SET )
- // PARAM_SET(double, xmin, protected, public);
- // type -> double
- // name -> xmin
- // qualifier -> protected
- // setqualifier -> public
- protected: double m_xmin; // 这里把 m_ 和参数传入的 xmin 连接在了一起生成了 m_xmin
- public: inline void setxmin(double xmin){ m_xmin = xmin; } // 这里类似
复制代码
在类或结构体里用 PARAM_SET 或 PARAM_GET 就可以“一键生成” getter/setter 了
|
|