在以下程序中,我收到这样的错误 Addtime.cpp:在函数'int main()'中: Addtime.cpp:41:6:错误:预期';'在'time1'之前 我彻底检查了程序,无法找到错误。请帮我。
#include <iostream>
#include<string>
using namespace std;
class time
{
public:
int hours;
int minutes;
int seconds;
void showtime()
{
cout<<"time is "<<hours <<"hours:"<<minutes<<"minutes:"<<seconds<<"seconds \n";
}
time(int temph,int tempm,int temps)
{
hours=temph;
minutes=tempm;
seconds=temps;
}
time operator +(time t2)
{
int temph;
int tempm;
int temps;
temph = hours + t2.hours;
tempm = minutes + t2.seconds;
temps = seconds + t2.minutes;
tempm = (tempm + temps)/60;
temps = temps % 60;
temph = (temph + tempm)/60;
tempm = tempm % 60;
return time(temph,tempm,temps);
}
};
int main()
{
time time1 (12,15,15);
cout<<"the first value is";
time1.showtime();
time time2(10,30,30);
cout<<"the second value is";
time2.showtime();
time time3;
time3 = time1 + time2;
cout<<"the result is";
time3.showtime();
time time4;
time4 = time1 + time2 + time3;
time4.showtime();
return 0;
}
答案 0 :(得分:2)
实际上它无法在这些想要调用默认构造函数的行进行编译:
time time3;
....
time time4;
原因是如果您手动编写任何其他构造函数(在您的情况下:time(int,int,int)
),编译器将不再为您生成默认构造函数。
要解决此问题,您需要进一步为time
类添加默认构造函数。
答案 1 :(得分:2)
这是我在线编译器中的代码片段的链接,之后我稍微摆弄了它:
看起来time
与C标准库中的time
函数发生冲突。
因此,修复此问题的方法是将您的类重命名为其他内容(在我称之为timer
的链接中),或者使用class time
声明每个实例以消除符号歧义。
请注意,您的变量time3
和time4
尝试使用默认构造函数,由于您添加了一个抑制默认值的3参数构造函数,因此它不存在,因此这两者都不会编译(我在我的例子中对它们进行了评论)。
答案 2 :(得分:0)
添加默认构造函数time(void){/ code /}; 如果你声明一个像time time;
这样的对象,你需要一个