定义 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;
...
};
我有很多类是这样的:
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;
...
};