gpt4 book ai didi

c++ - 宏 "parameter"名称网格。能行吗?我究竟做错了什么?

转载 作者:太空狗 更新时间:2023-10-29 23:47:27 24 4
gpt4 key购买 nike

    // MACROS

#define A_PROPERTY(TYPE, NAME) \
private: \
TYPE NAME; \
public: \
void SetNAME(TYPE theNAME) {NAME=theNAME;} \
TYPE GetNAME() {return NAME;} \

我正在尝试创建一个简单的宏,它将采用类型和名称并将创建:

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

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

A_PROPERTY(int, Age)

MACRO 有效,但创建了一个“getNAME”方法而不是“get(无论我在 NAME 中输入什么)”。 MACROS 似乎不能很好地一起解析字符串和“参数”。有没有办法实现我想要的?或者我应该只使用具有不同签名的“NAME”方法来区分 get 和 set?

最佳答案

Use ##拼接标记。

#define A_PROPERTY(TYPE, NAME)                            \
private: \
TYPE NAME; \
public: \
void Set##NAME(TYPE the##NAME) {NAME=the##NAME;} \
TYPE Get##NAME() {return NAME;}

关于c++ - 宏 "parameter"名称网格。能行吗?我究竟做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5584115/

24 4 0