Как правильно инициализировать переменную, если для инициализации требуется несколько шагов? - PullRequest
0 голосов
/ 12 мая 2019

У меня есть класс с именем Date, который содержит месяц, день, год и день недели для даты. Я хотел бы включить в класс статическую переменную, которая представляет текущую дату, но процесс ее инициализации требует нескольких шагов. Я думал об инициализации в конструкторе, но клиентский код может ссылаться на него перед созданием объекта Date. Каков наилучший способ справиться с этим?

Класс Дата:

class Date { 
        private: 
                // Date variables 
                unsigned int day; 
                unsigned int month; 
                unsigned int year; 
                unsigned int weekday; 

        public: 
                Date() = default; 
                Date(unsigned int, unsigned int, unsigned int); 

                void add_days(unsigned int);                     

                // Maintain static const info on current date 
                static const Date current_date; 

                // Getter and setter methods 
                unsigned int get_day(); 
                unsigned int get_month(); 
                unsigned int get_year(); 
                unsigned int get_weekday(); 

                void set_day(); 
                void set_month(); 
                void set_year(); 
};

Код для инициализации current_date:

time_t raw_time = time(0);
tm current_tm;
localtime_s(&current_tm, &raw_time);
Date temp(current_tm.tm_mon, current_tm.tm_mday, current_tm.tm_year);
temp.weekday = current_tm.tm_wday;
const Date Date::current_date = temp;

Спасибо за любые предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...