重载operator-运算符的问题
时间类,有三个成员字段:
int m_nHour;// 小时
int m_nMinute;// 分
int m_nSecond;// 秒
CMyTime CMyTime::operator - (const CMyTime& src) const
{
CMyTime temp;
temp.m_nHour = m_nHour - src.m_nHour;
temp.m_nMinute = m_nMinute - src.m_nMinute;
temp.m_nSecond = m_nSecond - src.m_nSecond;
if (temp.m_nSecond < 0)
{
temp.m_nSecond += 60;
temp.m_nMinute -= 1;
}
if (temp.m_nMinute < 0)
{
temp.m_nMinute += 60;
temp.m_nHour -= 1;
}
return temp;
}
这个函数感觉算法不对
举个例子:
14:31:02减去15:40:01,求差距?
手工计算结果为:负的01:08:59(负)
用该函数计算:
second:2-1: 1
minute:31-40: -9
nHour:14-15:-1
minute:
if(-9<0)==> minute:-9+60==51 , Hour: -1-1=-2
结果为:-02 :51:01
显然这结果 和手工的结果不对啊?
统一转换成ticks进行运算
[解决办法]