struct My: public Base { QString name; QColor c1, c2, c3; My() { ADDVALUE(name); ADDVALUE(c1); ADDVALUE(c2); ADDVALUE(c3); }};
C++ (Qt)#define ADD2VALUES(a, b) ADDVALUE(a); ADDVALUE(b) #define ADD3VALUES(a, b, c) ADD2VALUES(a, b); ADDVALUE(c)
C++ (Qt)#include <QMap> #include <boost/preprocessor.hpp> #define ADDVALUE(v) \ vs.insert(BOOST_PP_STRINGIZE(v), v) #define ADDVALUES_item(r, data, elem) \ ADDVALUE(elem); #define ADDVALUES(...) \ BOOST_PP_SEQ_FOR_EACH(ADDVALUES_item, _, BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__)) int main(int argc, char *argv[]){ QMap<QString, int> vs; ADDVALUES(1,2,3); ADDVALUES(5,4); ADDVALUES(6);}