Привет, сообщество stackoverflow,
В настоящее время в моем коде есть набор констант, который загружается из текстового файла.Эти переменные все время используются в алгоритме обучения, поэтому я объявил их в качестве члена моего класса для скорости выполнения (пример ниже с 6, но у меня их более 100):
class learningGraphDataset
{
public:
learningGraphDataset();
loadDatasetValuesFromTextFile();
private:
// DATASET
uint32_t _CST_FACTOR_MIN1;
uint32_t _CST_FACTOR_MIN2;
uint32_t _CST_FACTOR_MAX12;
uint32_t _CST_FACTOR_MAX12;
**
** (many others)
**
uint32_t _CST_LIMIT13;
};
Я сохраняю всезначений в файле, чтобы иметь возможность генерировать новый набор данных (генетический алгоритм) и перезапустить программное обеспечение с новым текстовым файлом набора данных.
Проблема заключается в том, что я хочу загрузить каждое значение из текстового файла, У меня есть что-то вроде 800 строк:
QString cstName = tmpLineSplitted[0];
uint32_t cstVal = tmpLineSplitted[1].toUInt();
if (cstName == "CST_FACTOR_MIN1_VAL")
{
_CST_FACTOR_MIN1 = cstVal;
errorOnLine=false;
nbConstantsLoaded++;
}
else if (cstName == "CST_FACTOR_MIN2_VAL")
{
_CST_FACTOR_MIN2 = cstVal;
errorOnLine=false;
nbConstantsLoaded++;
}
**
**(many others)
**
else if (cstName == "CST_LIMIT13_VAL")
{
_CST_LIMIT13 = cstVal;
errorOnLine=false;
nbConstantsLoaded++;
}
И добавить еще одну константу, это будет довольно медленно.Мой текстовый файл выглядит так:
CST_FACTOR_MIN1_VAL;61;
CST_FACTOR_MIN2_VAL;13;
**
**(many others)
**
CST_LIMIT13_VAL;27;
Я знаю, что в C ++ нет способа загрузить такую переменную («отражающий» язык?)
variable("_CST_FACTOR_MIN1") = cstVal;
Код работаетно есть ли способ написать все это лучше?Картографирование возможно?Может быть, все в двух столбцах (имя переменной в текстовом файле и настоящее имя переменной)?Если бы a мог загрузить все константы с циклом, который помог бы получить более понятный код.
Я использую C ++ 11 & Qt5 lib
Большое спасибо