Сабж. Давно с этой проблемой не сталкивался (делал такие вещи через питон), но сейчас вылез проект где от питона придется отказываться. Че-то свелосипедил, но уже полезли ошибки - параметров много, чего то забыл указать и упс...
Собственно пожелания. У меня С++ класс
class Model{
...
double a; // какой то параметр
int b; // и еще один параметр
...
};
...
model = Model()
model.a = 1.5 # какой то параметр
model.b = 2 # и еще один параметр
...
Теперь я вынужден выкинуть питон, и мне бы хотелось иметь возможность тупо скопипастить в конфиг-файл соответствующую часть питоньего файла + модифицировать хидер минимальным образом. С-но вопрос в том как реализовать минимальную модификацию хидера, с чтением конфига в плюсах я как нить справлюсь;-)
В идеале хотелось бы писать в хидере
class Model{
...
PAR(double, a, "какой то параметр");
PAR(int, b, "и еще один параметр");
...
};
Более затратной возможностью является вариант
class Model{
template <typename ... Args > void regparams(const char* arglist, Args ... args); // регистрирует нужные поля класса
...
double a; // какой то параметр
int b; // и еще один параметр
...
Model(){ PARAMS(a, b, ...); }
};
PARAMS(ARGS...) regparams(#ARGS, ARGS);
Может кто еще какие варианты предложит? Повторяюсь, основное требование - минимальное дополнительное упоминание полей класса, их просто туева хуча.