以下代码没有错,但是若把t=t1-Time(100)换成t=t1-100则有如下错误:
binary '-' : no operator defined which takes a right-hand operand of type 'const int' (or there is no acceptable conversion)为什么不能进行隐式转换呢???#include <iostream.h>class Time
{
public:
int m_iHour;

public:
Time()
{
m_iHour=24;
} Time(int h):m_iHour(h)
{
}

friend Time operator + (Time& T1,Time& T2);
friend Time operator - (Time& T1,Time& T2);

};
Time operator + (Time& T1,Time& T2)
{
Time t;
t.m_iHour=T1.m_iHour+T2.m_iHour;
return t;
}Time operator - (Time& T1,Time& T2)
{
Time t;
t.m_iHour=T1.m_iHour-T2.m_iHour;
return t;
}
void main()
{
Time t1;
Time t;
t=t1-100;
cout<<"Hour:"<<t.m_iHour<<endl;
}

解决方案 »

  1.   

    friend Time operator - (Time& T1,int nT2);
    或作成成员
    Time xxx::operator - (int nT);
      

  2.   

    有Time(int h):m_iHour(h){},可以进行隐式转换的啊。
      

  3.   

    不是吧,那是构造函数耶,支持这样构造对象 Time T1(100),T2(200);
      

  4.   

    搞定了,原来要这样:operator-(const Time& T1,const Time& T2),有一位给出了实质性解决方法。