我有很多这样的类:
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) {}
struct A_Insert{Data_Construct//。。。}
这样,我的IDE就可以像对待普通的struct
声明一样对待它。 如有任何建议,将不胜感激。
继承:
struct DataReference
{
Data &d;
DataReference(Data& d) : d(d) {}
};
struct A_Insert : DataReference
{
using DataReference::DataReference;
...
};