单位类和单位转换

采石工 2013-01-02 04:51:10
我想写两个单位类,可以实现两者之间的转换。如下,请问如何修改,或者其他思路实现相似的功能。

#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;
}
...全文
119 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
abc41106 2013-01-02
  • 打赏
  • 举报
回复
最好避免隐式类型转换。 重载赋值操作符吧:
#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;
}
采石工 2013-01-02
  • 打赏
  • 举报
回复
引用 3 楼 mindyjhr 的回复:
楼主你的问题是什么?
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; 我想使上面代码输出的结果为: 1 60 1 60 可是我写的代码会出现如顶楼所示的错误,不知何故,如何修改
mindyjhr 2013-01-02
  • 打赏
  • 举报
回复
楼主你的问题是什么?
jordancart 2013-01-02
  • 打赏
  • 举报
回复
坐等高手~~~
j1046032618 2013-01-02
  • 打赏
  • 举报
回复
帮你打酱油一下

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧