В какое-то свободное время я работаю над каким-то физическим симуляционным кодом, чтобы я: а) имел фреймворк, который нужно строить в будущем, и б) держись свежим с C++. У меня есть несколько значений (скорость света, размер коробки, количество частиц, что-то вроде этого), что почти каждая часть программы нуждается, но я бы очень хотел дать пользователю возможность указать эти значения во входе. cfg file (так что такие вещи, как #DEFINE
+ a constants.h
файл не будет работать). Я могу, конечно, хорошо прочитать эти ценности, но каков обычный/лучший способ сделать их доступными во многих разных модулях?Как организовать глобальные переменные ввода?
0
A
ответ
1
Вместо того, чтобы куча других несвязанных глобальных переменных, почему бы не сделать struct
или class
, чтобы содержать их, и есть функция, которая извлекает или обновляет текущее состояние конфигурации?
Например, в качестве struct
вы можете реализовать методы сериализации для чтения или записи в файл типа .cfg
.
Это может также реализовать статический метод для возврата активной конфигурации, поэтому глобальный метод , который ссылается на локальную переменную в реализации.
2
Как насчет одноточечного:
class Universe {
private:
Universe();
public:
static Universe& GetInstance();
void Reload();
double GetSpeedOfLight() const { return m_C; }
...
private:
double m_C; //!< Speed of light
};
Universe& Universe::GetInstance() {
static Universe instance;
return instance;
}
Universe::Universe() {
Reload();
}
void Universe::Reload() {
// load your constants
}
Смежные вопросы
- 1. Глобальные глобальные переменные Django
- 2. Определить глобальные переменные из ввода файла C++
- 3. Глобальные переменные?
- 4. Глобальные переменные
- 5. Как создать глобальные переменные?
- 6. Как сделать глобальные переменные?
- 7. Как объявить глобальные переменные?
- 8. Как определить глобальные переменные?
- 9. Как создать глобальные переменные?
- 10. Спрайты как глобальные переменные?
- 11. Лучший способ ввода форм ввода в глобальные переменные?
- 12. Динамически устанавливать глобальные переменные
- 13. Глобальные переменные не работают
- 14. Глобальные переменные, не действующие как локальные переменные?
- 15. Как отслеживать неиспользуемые глобальные переменные
- 16. Как сбросить все глобальные переменные?
- 17. Как установить глобальные переменные командой
- 18. Как назначить глобальные переменные AsyncTask
- 19. scipy.io.savemat Как сохранить глобальные переменные?
- 20. Как инициализировать глобальные переменные андроида
- 21. python Как изменить глобальные переменные
- 22. Как python загружает глобальные переменные?
- 23. глобальные переменные python как аргументы
- 24. Как преобразовать в глобальные переменные?
- 25. Как сбросить глобальные переменные CUDA
- 26. Когда создаются глобальные переменные?
- 27. Глобальные переменные GLSL
- 28. Внешнии, заголовки, глобальные переменные
- 29. Установить глобальные переменные Codeigniter
- 30. Глобальные переменные в interpire
Ах, да, конечно! Это работает намного лучше. У меня никогда не было причин использовать внешние объекты на C++; * один * объект, который содержит все, что касается текущей вселенной, отлично подходит для счета! –