我刚开始学习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;
}
2条答案
按热度按时间8yoxcaq71#
您的代码存在 * 两个问题 *,如下所述:
问题1
第一个问题是你试图在类外定义默认构造函数,而你没有在类内声明它,记住,为了在类外定义任何成员函数,它的相应声明必须首先在类内。
因此,要解决这个问题,请删除实际上使该声明成为析构函数声明的
~
,如下所示:问题2
此外,请避免使用
using namespace std;
,以避免用户定义的类名与标准库名称之间发生冲突。Why is "using namespace std;" considered bad practice?yftpprvb2#
上课时间与标准库中的function time之间存在冲突。
给你
编译器期望函数调用的参数。
这是避免
using namespace std
的原因之一。