Robím si triedu, ktorá by mala zvládať všetky bežné úkony a konverzie dátumu a času. Pôvodne som si jednu triedu napísal, ale postavil som ju nad štruktúrou tm, ktorú som prasiacky podedil do public časti (urobil som to koli možnosti implicitnej konverzie) a rozšíril ju o helper metódy.
Dedenie premenných, tak aby boli prístupné z vonku nepovažujem za čisté riešenie (imho premenné do public časti nepatria (ak nejde o options objekt), lebo sa tým porušuje zapúzdrenie... takže som dedičnosť chcel nahradiť kompozíciou. A z tm urobiť private member.
narazil som, ale aj na vážnejší technický problém. štruktúra tm má najmenšiu jednotku sekunda. Takže ak DateTime postavím na tm s menším intervalom ako sekunda si neporadí. Rozhodol som s teda, že to celé prepíšem a postavím to nad:
std::chrono::system_clock::time_point a std::chrono::system_clock
ten si pordí fakt s maličkými intervalmi, akurát nevidím spôsob ako čas naformátovať na string (okrem manuálnej konverzie). C++ 20 by malo obsahovať std::chrono::format akurát moja preview draft verzia C++ 20 std::chrono::format zatiaľ neobsahuje. Ako teda std::chrono::system_clock::time_point prekonvertovať na string ak nemám k dispozícii std::chrono::format? Vygooglil som si nejaké príklady ktoré ale používajú konverziu na tm tomu sa práve chcem vyhnúť. Lebo potom vlastne tým std::chrono::system_clock::time_point nič nezískam . Takže prosím o radu akým spôsobom naformátovať std::chrono::system_clock::time_point (alebo v horšom prípade aspoň time_t) na string (alebo const char*)? Ale aby sa dala používať presnosť na milisekundy prípadne ešte menej?