在编译下面的代码时,我收到错误
在int main()中,t1未在此范围内声明。
我正在使用g++
。在main()
我已经宣布t1
,t2
和t3
。那为什么我会收到这个错误?
#include<iostream>
using namespace std;
class time
{
int hours;
int minute;
public:
void getdata(int h,int m)
{
hours=h;
minute=m;
}
void putdata(void)
{
cout<<"\n Hours = "<<hours;
cout<<"\n Minutes = "<<minute;
}
void sumtime(time ,time);
};
void time::sumtime(time t1,time t2)
{
minute=t1.minute+t2.minute;
hours=minute/60;
minute=minute%60;
hours = hours + t1.hours + t2.hours;
}
int main()
{
time t1,t2,t3;
t1.getdata(2,45);
t2.getdata(3,30);
t3.sumtime(t1,t2);
cout<<"\n T1 ... "<<t1.putdata();
cout<<"\n T2 ..."<<t2.putdata();
cout<<"\n T3 ... "<<t3.putdata();
return 0;
}
答案 0 :(得分:7)
您的名为time
的班级很可能与C Standard Library function of the same name名称冲突。
我的建议是将您的类和相关函数放在自己的命名空间中。
我还建议你不要using namespace std
,而只是引入你真正需要的东西,例如using std::cout
。更好的是,完全避免使用using
,只需在代码中明确。
答案 1 :(得分:0)
此程序中有一个错误。
在main()
函数
cout<<"\n T1 ... "<<t1.putdata()
上面一行putdata()
的将返回void
类型,但cout
需要char
或可转换类型。所以它应该是这样的:
cout<<"\n T3 ... ";
t3.putdata();
答案 2 :(得分:-2)
尝试将您的班级重命名为Time
(而不是time
),因为时间类已经存在于命名空间std中。