宏"参数"名称网格.可以吗?我究竟做错了什么?

Jas*_*enX 2 c++ macros

    // 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并将创建:

  1. TYPE的私有成员名为NAME
  2. 名为GetNAME的公共"getter"方法(其中NAME是变量的......)
  3. 名为GetNAME的公共"setter"方法(其中NAME是变量的......)

这是我从类定义中使用它的方式:

A_PROPERTY(int, Age)
Run Code Online (Sandbox Code Playgroud)

MACRO有效,但创建了一个"getNAME"方法,而不是"get(无论我放在NAME中)".似乎MACROS不能很好地解析字符串和"参数".有没有办法实现我想要的?或者我应该将方法作为"NAME"使用不同的签名来区分get和set?

ken*_*ytm 8

使用##缝合令牌.

#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)