单位类和单位转换
我想写两个单位类,可以实现两者之间的转换。如下,请问如何修改,或者其他思路实现相似的功能。
#include <iostream>
using namespace std;
class minute;
class second
{
public:
double value;
second(double v)
{
value=v;
}
//error C2027: use of undefined type 'minute'
operator minute()
{
//error C2440: '<function-style-cast>' :
//cannot convert from 'double' to 'minute'
return minute(value*60.0);
}
};
class minute
{
public:
double value;
minute(double v)
{
value=v;
}
operator second()
{
return second(value/60.0);
}
};
int main()
{
minute m1(1);
second s1=m1;
cout<<m1.value<<endl;
cout<<s1.value<<endl;
second s2(60);
minute m2=s2;
cout<<m2.value<<endl;
cout<<s2.value<<endl;
return 0;
}
[解决办法]
最好避免隐式类型转换。
重载赋值操作符吧:
#include <iostream>
using namespace std;
class minute;
class second
{
public:
double value;
second(){}
second(double v)
{
value=v;
}
void operator=(const minute &m);
};
class minute
{
public:
double value;
minute(){}
minute(double v)
{
value=v;
}
void operator=(const second &s);
};
void second::operator=(const minute &m)
{
this->value=m.value*60.0;
}
void minute::operator=(const second &s)
{
this->value=s.value/60.0;
}
int main()
{
minute m1(1);
second s1;
s1=m1;
cout<<m1.value<<endl;
cout<<s1.value<<endl;
second s2(60);
minute m2;
m2=s2;
cout<<m2.value<<endl;
cout<<s2.value<<endl;
return 0;
}