宏"parameter"名称网格。能行吗?我做错了什么?

Macro "parameter" name mesh. Can it work? What am I doing wrong?

本文关键字:错了 什么 parameter 网格      更新时间:2023-10-16
    // MACROS
#define A_PROPERTY(TYPE, NAME)                      
    private:                                        
        TYPE NAME;                                  
    public:                                         
        void SetNAME(TYPE theNAME) {NAME=theNAME;}  
        TYPE GetNAME() {return NAME;}               

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

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

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

A_PROPERTY(int, Age)

宏工作,但创建一个"getNAME"方法而不是"get(无论我放入NAME("。似乎宏不能很好地将字符串和"参数"解析在一起。有没有办法实现我想要的?或者我应该只将方法作为"NAME",并带有不同的签名来区分 get 和集合?

使用##来拼接标记。

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

这将为所有 NAME 和 TYPE 参数创建相同的函数名称。

我想你想要这个:

void Set##NAME(TYPE the##NAME) {NAME=the##NAME;}  
TYPE Get##NAME() {return NAME;}               
NAME并不是

真正的私有,因为您可以通过成员函数读取和写入它。 您不妨使用struct,或公开NAME