我想做的事情如下:
class MyClass {
list<FieldType> allFields;
ADDFIELD(field1, Type, args);
ADDFIELD(field2, Type, args);
MyClass(){
MAKE_FIELD_LIST();
}
}
并将其扩展为
class MyClass {
list<FieldType> allFields;
Type field1 = Type(args);
Type field2 = Type(args);
MyClass(){
allFields.put(field1);
allFields.put(field2);
}
}
MAKE_FIELD_LIST()
将使用ADDFIELD
将每个字段添加到列表对象allFields
中。我过去曾经使用宏来处理更简单的事情,但我无法弄清楚是否有一种方法可以存储并添加到MAKE_FIELD_LIST
使用的变量名数组中。
答案 0 :(得分:0)
您可以做的一件事是使用单个tuple
而不是使用单独的成员。您甚至可以将该类与map
个字符串相关联,也可以访问正确的元素。
class foo
{
public:
template <typename T>
void AddMember(const T& t) {
std::tuple_cat(members_, std::make_tuple(t));
}
private:
std::tuple<>members_;
};