定义 javascript 构造函数关键字的宏

Macro to define javascript constructor keyword

我有很多类是这样的:

struct A_Insert
{
    Data &d;
    A_Insert(d) : d(d){}

    // ...
}

struct A_Query
{
    Data &d;
    A_Query(d) : d(d){}

    // ...
}

struct B_Insert
{
    Data &d;
    B_Insert(d) : d(d){}

    // ...
}

struct B_Query
{
    Data &d;
    B_Query(d) : d(d){}

    // ...
}

我能想到的最好的事情就是像这样定义一个宏:

#define Data_Query(name, body) struct name{Data &d; name(Data &d) : d(d) {} body}

但这会导致代码有些难看,因为我必须使用括号来定义我的结构,而我的 IDE 处理得不是很好。

Data_Query(A_Insert, 
    int bind_params(stmt &stmt){}
    ...
)

我想要一个宏,它可以让我为构造函数获取包含类型的名称,这样我就可以编写如下代码:

#define constructor CONTAINING_TYPE
#define Data_Construct Data &d; constructor (Data &d) : d(d) {}

结构A_Insert { Data_Construct // ... }

这样我的 IDE 就可以将其视为正常的 struct 声明。如有任何建议,我们将不胜感激。

继承:

struct DataReference
{
    Data &d;
    
    DataReference(Data& d) : d(d) {}
};

struct A_Insert : DataReference
{
    using DataReference::DataReference;

    ...
};