Я читаю кучу «настроек» для приложения из XML-файла, и я хочу, чтобы эти параметры находились в пространстве имен, чтобы все мои функции могли иметь доступ. Я успешно выполнил эту работу, объявив переменные пространства имен в заголовке как 'extern int test;' а затем инициализировать их в исходном файле 'int test {0};'. Затем в исходном файле есть функция, которая читает XML и присваивает значение переменной пространства имен, и все это hunky dory.Как инициализировать глобальные константные переменные в пространстве имен со значениями из функции?
Проблема в том, что я понимаю, что я создаю ~ 100 переменных для чтения/записи, когда они должны быть постоянными. Поэтому я пытаюсь изменить свой код сейчас, когда они постоянны, и я не понимаю, как это возможно. Вот что я пробовал:
//settings.hpp
#pragma once
//header guard
namespace settings {
extern const int ktest;
}
//settings.cpp
void ReadXML() {
int testvalue{1}; //1 is default values
//here would be some code that gets value form XML and assigns it to testvalue
namespace settings {
const int ktest{testvalue};
}
}
Теперь проблема в том, что я не могу поместить значения пространства имен внутри функции. Поэтому, если я перемещаю их вне функции ReadXML, мне также нужно переместить временные переменные, но даже это не имеет значения, потому что мне нужны переменные пространства имен, инициализированные только после выполнения функции. Является ли то, что я пытаюсь сделать, даже возможно?
Я бы сказал, что проблема заключается не в том, есть ли у вас переменные или константные глобальные переменные. Я бы сказал, что проблема связана с глобальными переменными. И 100 из них. Это не хорошая практика программирования. –
Я не утверждаю, что, но если бы у вас было 100 глобальных переменных, было бы лучше, если бы они были постоянными? Это изменение не требовало от меня перехода и изменения каждого исходного файла, но, по крайней мере, сделало его постоянным, я подумал, что это будет улучшение. – DrTarr