求高手帮忙看看这个程序,老有个错误,定义时间类Time

#include <iostream>
using namespace std;
class Time
{
private:
int Hour,Minute,Second;
public:
Time(int h=0,int m=0,int s=0);
Time(const Time &ob);
~Time();
void ChangeTime(int h,int m,int s);
int GetHour();
int GetMinute();
int GetSecond();
void PrintTime();
};
Time::Time(int h,int m,int s)
{
Hour=h;
Minute=m;
Second=s;
}

Time::Time(const Time &ob)
{
Hour=ob.Hour;
Minute=ob.Minute;
Second=ob.Second;
}

Time::~Time()

void Time::ChangeTime(int h,int m,int s)
{
Hour=h;
Minute=m;
Second=s;
}

int Time::GetHour()
{
return Hour;
}
int Time::GetMinute()
{
return Minute;
}
int Time::GetSecond()
{
return Second;
}
void Time::PrintTime()
{
cout<<Hour<<":"<<Minute<<":"<<Second<<endl;
}

int main()
{
Time Time1();
Time Time2(2);
Time Time3(2,3);
Time Time4(2,3,4);
Time1.PrintTime();
Time2.PrintTime();
Time3.PrintTime();
Time4.PrintTime();
Time1.ChangeTime();
Time2.ChangeTime(9);
Time3.ChangeTime(9,8);
Time4.ChangeTime(9,8,7);
cout<<Time1.GetHour()<<":"<<Time1.GetMinute()<<":"<<Time1.GetSecond()<<endl;
cout<<Time2.GetHour()<<":"<<Time2.GetMinute()<<":"<<Time2.GetSecond()<<endl;
cout<<Time3.GetHour()<<":"<<Time3.GetMinute()<<":"<<Time3.GetSecond()<<endl;
cout<<Time4.GetHour()<<":"<<Time4.GetMinute()<<":"<<Time4.GetSecond()<<endl;
return 0;
}

因为你的程序缺少无参数,一个参数,两个参数的构造函数和ChangeTime函数,所以你在主程序中只能以三个参数调用构造函数和ChangeTime函数。否则你需要补全相应的函数。
#include <iostream>
using namespace std;
class Time
{
private:
int Hour,Minute,Second;
public:
Time(int h=0,int m=0,int s=0);
Time(const Time &ob);
~Time();
void ChangeTime(int h,int m,int s);
int GetHour();
int GetMinute();
int GetSecond();
void PrintTime();
};
Time::Time(int h,int m,int s)
{
Hour=h;
Minute=m;
Second=s;
}

Time::Time(const Time &ob)
{
Hour=ob.Hour;
Minute=ob.Minute;
Second=ob.Second;
}

Time::~Time(){}

void Time::ChangeTime(int h,int m,int s)
{
Hour=h;
Minute=m;
Second=s;
}

int Time::GetHour()
{
return Hour;
}
int Time::GetMinute()
{
return Minute;
}
int Time::GetSecond()
{
return Second;
}
void Time::PrintTime()
{
cout<<Hour<<":"<<Minute<<":"<<Second<<endl;
}

int main()
{
//Time Time1();
//Time Time2(2);
//Time Time3(2,3);
Time Time4(2,3,4);
//Time1.PrintTime();
//Time2.PrintTime();
//Time3.PrintTime();
Time4.PrintTime();
//Time1.ChangeTime();
//Time2.ChangeTime(9);
//Time3.ChangeTime(9,8);
Time4.ChangeTime(9,8,7);
//cout<<Time1.GetHour()<<":"<<Time1.GetMinute()<<":"<<Time1.GetSecond()<<endl;
//cout<<Time2.GetHour()<<":"<<Time2.GetMinute()<<":"<<Time2.GetSecond()<<endl;
//cout<<Time3.GetHour()<<":"<<Time3.GetMinute()<<":"<<Time3.GetSecond()<<endl;
cout<<Time4.GetHour()<<":"<<Time4.GetMinute()<<":"<<Time4.GetSecond()<<endl;
return 0;
}追问

你好,非常感谢,参数补齐后可以正常运行了。但我还是想请教你一下那如何添加无参数,一个参数,两个参数的构造函数和ChangeTime函数呢?
public:
Time(int h=0,int m=0,int s=0);我理解为提供默认参数值,然后没有提供实参的语句我希望能够结果为默认值

追答

补齐后的程序:
#include
using namespace std;
class Time
{
private:
int Hour,Minute,Second;
public:
Time();
Time(int h);
Time(int h,int m);
Time(int h,int m,int s);
Time(const Time &ob);
~Time();
void ChangeTime();
void ChangeTime(int h);
void ChangeTime(int h,int m);
void ChangeTime(int h,int m,int s);
int GetHour();
int GetMinute();
int GetSecond();
void PrintTime();
};
Time::Time()
{
Hour=0;
Minute=0;
Second=0;
}
Time::Time(int h)
{
Hour=h;
Minute=0;
Second=0;
}
Time::Time(int h,int m)
{
Hour=h;
Minute=m;
Second=0;
}
Time::Time(int h,int m,int s)
{
Hour=h;
Minute=m;
Second=s;
}

Time::Time(const Time &ob)
{
Hour=ob.Hour;
Minute=ob.Minute;
Second=ob.Second;
}

Time::~Time(){}

void Time::ChangeTime()
{
Hour=0;
Minute=0;
Second=0;
}
void Time::ChangeTime(int h)
{
Hour=h;
Minute=0;
Second=0;
}
void Time::ChangeTime(int h,int m)
{
Hour=h;
Minute=m;
Second=0;
}
void Time::ChangeTime(int h,int m,int s)
{
Hour=h;
Minute=m;
Second=s;
}

int Time::GetHour()
{
return Hour;
}
int Time::GetMinute()
{
return Minute;
}
int Time::GetSecond()
{
return Second;
}
void Time::PrintTime()
{
cout<<Hour<<":"<<Minute<<":"<<Second<<endl;
}

int main()
{
Time Time1;
Time Time2(2);
Time Time3(2,3);
Time Time4(2,3,4);
Time1.PrintTime();
Time2.PrintTime();
Time3.PrintTime();
Time4.PrintTime();
Time1.ChangeTime();
Time2.ChangeTime(9);
Time3.ChangeTime(9,8);
Time4.ChangeTime(9,8,7);
cout<<Time1.GetHour()<<":"<<Time1.GetMinute()<<":"<<Time1.GetSecond()<<endl;
cout<<Time2.GetHour()<<":"<<Time2.GetMinute()<<":"<<Time2.GetSecond()<<endl;
cout<<Time3.GetHour()<<":"<<Time3.GetMinute()<<":"<<Time3.GetSecond()<<endl;
cout<<Time4.GetHour()<<":"<<Time4.GetMinute()<<":"<<Time4.GetSecond()<<endl;
return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-03
哪里的错误?追问

void Time::ChangeTime(int h,int m,int s)

:\Users\Administrator\Desktop\C++\Time.cpp(33) : warning C4518: 'void ' : storage-class or type specifier(s) unexpected here; ignored

追答

楼主对应的函数没有实现,我已经注释掉了。

#include
using namespace std;
class Time
{
private:
int Hour,Minute,Second;
public:
Time(int h=0,int m=0,int s=0);
Time(const Time &ob);
~Time();
void ChangeTime(int h,int m,int s);
int GetHour();
int GetMinute();
int GetSecond();
void PrintTime();
};
Time::Time(int h,int m,int s)
{
Hour=h;
Minute=m;
Second=s;
}

Time::Time(const Time &ob)
{
Hour=ob.Hour;
Minute=ob.Minute;
Second=ob.Second;
}

Time::~Time()
{}

void Time::ChangeTime(int h,int m,int s)
{
Hour=h;
Minute=m;
Second=s;
}

int Time::GetHour()
{
return Hour;
}
int Time::GetMinute()
{
return Minute;
}
int Time::GetSecond()
{
return Second;
}
void Time::PrintTime()
{
cout<<Hour<<":"<<Minute<<":"<<Second<<endl;
}

int main()
{
// Time Time1();
// Time Time2(2);
// Time Time3(2,3);
Time Time4(2,3,4);
// Time1.PrintTime();
// Time2.PrintTime();
// Time3.PrintTime();
Time4.PrintTime();
// Time1.ChangeTime();
// Time2.ChangeTime(9);
// Time3.ChangeTime(9,8);
Time4.ChangeTime(9,8,7);
// cout<<Time1.GetHour()<<":"<<Time1.GetMinute()<<":"<<Time1.GetSecond()<<endl;
// cout<<Time2.GetHour()<<":"<<Time2.GetMinute()<<":"<<Time2.GetSecond()<<endl;
// cout<<Time3.GetHour()<<":"<<Time3.GetMinute()<<":"<<Time3.GetSecond()<<endl;
cout<<Time4.GetHour()<<":"<<Time4.GetMinute()<<":"<<Time4.GetSecond()<<endl;
return 0;
}

相似回答