【发布时间】:2011-07-31 20:16:34
【问题描述】:
// MACROS
#define A_PROPERTY(TYPE, NAME) \
private: \
TYPE NAME; \
public: \
void SetNAME(TYPE theNAME) {NAME=theNAME;} \
TYPE GetNAME() {return NAME;} \
我正在尝试创建一个简单的宏,它将采用 TYPE 和 NAME 并将创建:
- 名为 NAME 的 TYPE 的私有成员
- 名为 GetNAME 的公共“getter”方法(其中 NAME 是变量...)
- 名为 GetNAME 的公共“setter”方法(其中 NAME 是变量...)
这是我从类定义中使用它的方式:
A_PROPERTY(int, Age)
MACRO 可以工作,但会创建一个“getNAME”方法而不是“get(whatever I put in NAME)”。似乎 MACROS 不能很好地同时解析字符串和“参数”。有没有办法实现我想要的?还是应该只使用具有不同签名的“NAME”方法来区分get和set?
【问题讨论】:
-
这是我见过的最恶心的东西。
-
也许令人反感,但至少它是可读的......
-
我希望我没有给你造成永久性伤害,DeadMG...
-
好吧,我的好奇心战胜了我的讽刺——上面的问题有什么令人恶心或反感的地方?