この行に小さな問題が見つかりました:
int nDiff(m_Hours*3600 + m_Minutes*60 - (rTime.Hours()*3600 + rTime.Minutes()*60));
nDiff( ... ) では、引数は絶対値である必要があります! nDiff( abs(...) )
たとえば、次の場合:
Time time1("01:00");
Time time2("02:00");
cout << ( time1 - time2 ).TimeStr() << endl;
出力:
hours = 18446744073709551615
Invalid input
この場合:
cout << ( time1 + time2 ).TimeStr() << endl;
出力:
03:00
その結論は単なる変更です。
int nDiff(m_Hours*3600 + m_Minutes*60 - (rTime.Hours()*3600 + rTime.Minutes()*60));
これについて:
int nDiff( abs(m_Hours*3600 + m_Minutes*60 - (rTime.Hours()*3600 + rTime.Minutes()*60) ) );
これをコードのヘッダーに追加します。
#include <cstdlib> // function abs()
このようにして、コードは非常にうまく機能します。:)
ハッピーコーディング!乾杯。