C++ 在main()中,未在范围中声明
编译下面的代码时,我得到了错误 在int main()中,t1未在此作用域中声明 我正在使用C++ 在main()中,未在范围中声明,c++,class,C++,Class,编译下面的代码时,我得到了错误 在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;
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;
}
#包括
使用名称空间std;
上课时间
{
整小时;
整数分钟;
公众:
void getdata(int h,int m)
{
小时=小时;
分钟=m;
}
作废数据(作废)
{
cout名为time
的类很可能与名称冲突
我的建议是将类和相关函数放在它们自己的名称空间中
我还建议你不要使用名称空间std
,而只需要带上你真正需要的东西,比如使用std::cout
。更妙的是,避免完全使用,只需在代码中显式显示。尝试将你的类重命名为Time
(而不是Time
),因为时间类已存在于命名空间std中。此程序中有一个错误。
在main()函数中
cout<<"\n T1 ... "<<t1.putdata()
或者只是不包括整个std
名称空间。@Resident饼干:虽然这是一个很好的建议,但在这里可能不起作用。如果是这样,使用不同的名称能解决问题吗?比方说,我用“times”来代替。@John Dibling,如果OP与std::time
冲突(这是我的赌注)它会起作用。但是,是的,你的答案肯定会解决问题。或者重命名你的时间类。:-)我收到了相同的错误消息,但前面有另一条:错误:预期的“;”在“t1”之前,在时间t1,t2,t3;
行中。第一个报告的语法错误是最重要的。语法错误通常会被忽略使用编译器,使以后的错误消息变得毫无意义。#include
可以直接(甚至间接)在
中进行声明,这让人非常恼火可见,但我们似乎被它卡住了。只是为了学究气,像coutYou这样的行没有回答实际被问到的问题:为什么这是一个错误?对——关键是你在回答中没有这么说。
cout<<"\n T3 ... ";
t3.putdata();