错误不知道怎么解决呀,求助!

yuyunliuhen 2007-03-14 10:53:53
//mytime0.h
#ifndef MYTIME0_H_
#define MYTIME0_H_
#include<iostream>
using namespace std;
class time
{
private:
int hours;
int minutes;
public:
time();
time(int n,int m=0);
void Addmin (int m);
void AddHr(int h);
void reset(int h =0,int m =0);
time sum (const time & t) const;
void show () const;
};
#endif


//mytime0.cpp
#include"mytime0.h"
time::time()
{
hours = minutes = 0;
}
time::time(int h,int m)
{
hours = h;
minutes = m;
}
void time:: Addmin(int m)
{
minutes += m;
hours += minutes / 60;
minutes %= 60;
}
void time::AddHr(int h)
{
hours +=h;
}
void time::reset(int h,int m)
{
hours =h;
minutes=m;
}
time time::sum(const time & t) const //返回time 而不是time &
{
time sum;
sum.minutes =minutes + t.minutes;
sum.hours=hours+t.hours+sum.minutes/60;
sum.minutes%=60;
return sum;
}
void time::show()const
{
cout<<hours<<" hours "<<minutes<<"minutes";
cout<<"\n";
}



//usingtime0.cpp
#include<iostream>

#include"mytime0.h"
using namespace std;
int main()
{
time A;
time B(5,40);
time C(2,55);
cout<<"A= ";
A.show();
cout<<"B= ";
B.show();
cout<<"C= ";
C.show();
A = B.sum;
cout<<" =B.sum=";
A.show();

return 0;
}

------ 已启动生成: 项目: 6, 配置: Debug Win32 ------
正在编译...
7.cpp
.\7.cpp(16) : error C3867: “time::sum”: 函数调用缺少参数列表;请使用“&time::sum”创建指向成员的指针
.\7.cpp(16) : error C2679: 二进制“=”: 没有找到接受“time (__thiscall time::* )(const time &) const”类型的右操作数的运算符(或没有可接受的转换)
c:\documents and settings\administrator\my documents\visual studio 2005\projects\6\6\mytime0.h(18): 可能是“time &time::operator =(const time &)”
试图匹配参数列表“(time, time (__thiscall time::* )(const time &) const)”时
生成日志保存在“file://c:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\6\6\Debug\BuildLog.htm”
6 - 2 个错误,0 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========


请问这个怎么解决啊?
time time::sum(const time & t) const //返回time 而不是time &
{
time sum;
sum.minutes =minutes + t.minutes;
sum.hours=hours+t.hours+sum.minutes/60;
sum.minutes%=60;
return sum;//这句有什么用?
}
...全文
271 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuyunliuhen 2007-03-15
  • 打赏
  • 举报
回复
恩,谢谢楼上的朋友,问题就出在这里,A = B.sum;书上也有这样的写法,大概是书上有点错误了吧.
leo201592 2007-03-15
  • 打赏
  • 举报
回复
A = B.sum;错误的根源
改成:A.sum(B);
taodm 2007-03-15
  • 打赏
  • 举报
回复
A = B.sum;是啥语法。
按你的程序只能写A = A.sum(B);
按比较常规写法,你应该用A += B;重载+=运算符。
返回time问题,看Effective C++ 2e item30
飞哥 2007-03-15
  • 打赏
  • 举报
回复
可以重载 =操作符
当然了,象上面改就简单了

64,644

社区成员

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

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