c++ 是构造函数还是代码有问题?

xriantvc  于 2023-03-05  发布在  其他
关注(0)|答案(2)|浏览(175)

我刚开始学习C++。我试图创建一个代码,通过使用构造函数来显示时间并添加分钟。但是,在使用CodeBlocks构建代码时,在作用域分辨率“time::time()”下显示了一个错误。
我尝试在构造函数中创建参数,但没有效果。

#include<iostream>
using namespace std;
class time
{
private:
    int hours,minutes;
public:
    time(int);
    ~time();
    void enterTime();
    void addMinutes();
    void displayTime();
};
time::time()
{
    int timehours;
    int timeminutes;
    cout<<"Enter hours: "<<endl;
    cin>>timehours;
    if(timehours<00 && timehours>23)
    {
        cout<<"Invalid Entry of time. Try again."<<endl;
        time();
    }
    else
        timehours==00;
    cout<<"Enter minutes: "<<endl;
    cin>>timeminutes;
    if(timeminutes<0 && timeminutes>59)
    {
        cout<<"Invalid Entry of time. Try again."<<endl;
        time();
    }
    else
        timeminutes==00;
    cout<<"Initial Time: "<<timehours<<": "<<timeminutes<<endl;
}
void time::enterTime()
{
    cout<<"Enter hours: "<<endl;
    cin>>hours;
    if(hours<00 && hours>23)
    {
        cout<<"Invalid entry of time. Try Again."<<endl;
        enterTime();
    }
    cout<<"Enter minutes: "<<endl;
    cin>>minutes;
    if(minutes<00)
    {
        cout<<"Invalid entry of time. Try Again,"<<endl;
        enterTime();
    }
    cout<<"Initial Time:- "<<hours<<": "<<minutes<<endl;
}
void time::addMinutes()
{
    if(minutes>60 && minutes%60>0)
    {
        int addhours,addMin;
        addMin=(minutes%60>0);
        addhours=(minutes/60);
        hours+=addhours;
        if(hours>=24)
            hours-=24;
    }
}
void time::displayTime()
{
    cout<<"Updated time:"<<hours<<" :"<<minutes<<" "<<endl;
}
int main()
{
    int n;
    for(n=0;n<4;n++)
    {
        time Time[4];
        if((n+1)%2==0)
        {
            Time[n].time();
            Time[n].addMinutes();
            Time[n].displayTime();
        }
        else
        {
            Time[n].enterTime();
            Time[n].addMinutes();
            Time[n].displayTime();
        }
    }
    return 0;
}
8yoxcaq7

8yoxcaq71#

您的代码存在 * 两个问题 *,如下所述:

问题1

第一个问题是你试图在类外定义默认构造函数,而你没有在类内声明它,记住,为了在类外定义任何成员函数,它的相应声明必须首先在类内。
因此,要解决这个问题,请删除实际上使该声明成为析构函数声明的~,如下所示:

class time
{
private:
    int hours,minutes;
public:
    time(int);
//-v---------------------->removed ~ from here
    time();

    //other code as before
};
问题2

此外,请避免使用using namespace std;,以避免用户定义的类名与标准库名称之间发生冲突。Why is "using namespace std;" considered bad practice?

yftpprvb

yftpprvb2#

上课时间与标准库中的function time之间存在冲突。
给你

time Time[4];

编译器期望函数调用的参数。
这是避免using namespace std的原因之一。

相关问题