在main()中,未在范围内声明

时间:2014-11-17 20:47:26

标签: c++ class

在编译下面的代码时,我收到错误

  

在int main()中,t1未在此范围内声明。

我正在使用g++。在main()我已经宣布t1t2t3。那为什么我会收到这个错误?

#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; 
}

3 个答案:

答案 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中。