首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

重载operator-运算符的有关问题

2013-04-09 
重载operator-运算符的问题时间类,有三个成员字段:int m_nHour// 小时int m_nMinute// 分int m_nSecond

重载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进行运算
[解决办法]

引用:
应该先判断小时哪个大?然后由此再决定哪个减哪个

按照楼主的说法,应该是先判断小时的大小,如果前者比后者大应该还要再加上24才对啊

热点排行