Я разрабатываю проект для школы. Это будет тот, который имитирует изменение численности населения планеты по континентам.
Первый вопрос касается дизайна. У меня есть файл данных, который содержит константы (темпы изменений, катастрофы, происходящие на этом континенте, исходные популяции и т. Д.) Для каждого континента. Файл данных организован в пространство имен «data», где каждый континент имеет пространство имен в данных (т. Е. Для определения численности населения Африки используйте data::Africa::population
. Является ли файл данных хорошей идеей, или должны ли ставки устанавливаться для объекта в время создания объекта? Существует около 12 - 15 скоростей и параметров, которые необходимо установить, используя конструктор или функции.
Второй вопрос, при условии, что файл данных является хорошей идеей, является основным вопросом, согласно заголовку. Как добавить «использующее пространство имен» к объекту, чтобы я мог получить доступ к переменным, установленным в файле данных (в этом случае мне не нужно объявлять их локально. Единственная переменная, которая могла бы измениться, - это популяция, остальные постоянны)?
См. Пример ниже ...
Это файл данных, определенный в data.h
:
namespace data {
namespace Africa {
double population = 12121212;
// other variables here...
}
}
Это continent.h
(в основном конструктор):
class Continent {
Continent(string name) {
if (name == "africa")
using namespace Africa; // I want this to apply
// to the entire object, not just the constructor
}
}
Меня не беспокоит, что имена не будут совпадать (т.е. Африка! = Африка), потому что континенты создаются автоматически внутри класса Globe
. (Итак, сначала создается объект глобуса. Внутри конструктора глобуса 7 континентов создаются и добавляются к вектору континента внутри globe.h
. Континенты инициализируются с именем, которое я бы проверил и установил «использование пространства имен»).
Возможно ли то, что я прошу сделать? Если это так, это хорошая идея или есть лучшие практики? Я начинающий программист, который стремится учиться, поэтому вся помощь будет оценена.
Кроме того, причина, по которой я хотел получить файл данных, заключается в том, что внешний интерфейс приложения (т. Е. Графический интерфейс) не будет устанавливать скорости; ставки жестко закодированы. Я хотел, чтобы другие разработчики могли легко менять тарифы в одном месте (или даже нетехнические люди могли найти файл, в котором они могли бы изменять тарифы, например, после переписи или что-то в этом роде).