Witam, mam za zadanie stworzyć funkcję składową do mojej struktury opisującej czas, która będzie zwracała czas jaki pozostał do północy.
Tak wygląda moja struktura w pliku nagłówkowym:
#include <iostream>
#include <string>
struct Time {
int godzina;
int minuta;
int sekunda;
/* funkcje potrzebne do poprzednich zadan
auto to_string() const -> std::string;
auto next_hour() -> void;
auto next_minute() -> void;
auto next_second() -> void;
enum class Time_of_day { Niezdefiniowany, Rano, Dzien, Wieczor, Noc };
auto time_of_day() const -> Time_of_day;
auto to_string(Time_of_day) -> std::string;
auto operator+ ( Time const& ) const -> Time ;
auto operator- ( Time const& ) const -> Time ;
auto operator< ( Time const& ) const -> bool ;
auto operator> ( Time const& ) const -> bool ;
auto operator== ( Time const& ) const -> bool ;
auto operator!= ( Time const& ) const -> bool ;
auto count_seconds () const -> uint64_t ;
auto count_minutes () const -> uint64_t ;
*/
auto time_to_midnight () const -> Time ; // deklaracja funkcji zwracajacej czas pozpstaly do polnocy
Time(int godzina, int minuta, int sekunda);
};
Definicja mojej funkcji obecnie wygląda tak:
auto :: Time :: time_to_midnight () const -> Time
{
return Time(23-godzina, 59-minuta, (59-sekunda)+1);
}
Jest ona oczywiście błędna, ponieważ, jeżeli stworzymy obiekt, który będzie wyglądał np. tak: "12:42:00", to funkcja zwróci coś takiego: "11:17:60", czyli będziemy mieli 60 sekund a nie następną minutę. Mógłbym niby użyć funkcje, które stworzyłem (next_minute), ale funkcja time_to_midnight ma zwracać "Time", więc nie mogę napisać w niej np. minuta++. Czy ma ktoś pomysł jak rozwiązać ten problem. Będę wdzięczny za wszelkie wskazówki i z góry dziękuję!