C++ 在main()中,未在范围中声明

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;

编译下面的代码时,我得到了错误

在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; 
}
#包括
使用名称空间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();