// MACROS
#define A_PROPERTY(TYPE, NAME) \
private: \
TYPE NAME; \
public: \
void SetNAME(TYPE theNAME) {NAME=theNAME;} \
TYPE GetNAME() {return NAME;} \
Run Code Online (Sandbox Code Playgroud)
我正在尝试创建一个简单的宏,它将采用TYPE和NAME并将创建:
这是我从类定义中使用它的方式:
A_PROPERTY(int, Age)
Run Code Online (Sandbox Code Playgroud)
MACRO有效,但创建了一个"getNAME"方法,而不是"get(无论我放在NAME中)".似乎MACROS不能很好地解析字符串和"参数".有没有办法实现我想要的?或者我应该将方法作为"NAME"使用不同的签名来区分get和set?
使用##缝合令牌.
#define A_PROPERTY(TYPE, NAME) \
private: \
TYPE NAME; \
public: \
void Set##NAME(TYPE the##NAME) {NAME=the##NAME;} \
TYPE Get##NAME() {return NAME;}
Run Code Online (Sandbox Code Playgroud)