钱能的C++上的

来源:百度知道 编辑:UC知道 时间:2024/05/15 01:57:07
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
class Date
{
int absday;
protected:
void ymd2i(int y,int m,int d);
static const int tians[];
bool isLeapYear()const;
public:
Date(const string& s);
Date(int n=1):absday(n){}
Date(int y,int m,int d){ymd2i(y,m,d);}
Date operator+(int n)const
{
return Date(absday+n);
)
Date& operator+=(int n)
{
absday+=n;return *this;
}
Date& operator++()
{
return *this+=1;
}
int operator-(Date& d)const
{
return adsday-d.adsday;
}
friend ostream& operator<<(ostream& o,const Date& d);
};
const int Date::tians[]={ 0, 31, 59, 89, 120, 150, 181, 212, 242, 273, 303, 334 };
void Date::ymd2i(int y,int m,int d)
{
if(0<y||y>9999||0<m||m>12||0<d||d>31)
absday=1,return;
absday=

大体看了一下,貌似改的难度跟重写一个新的差不多。

例如,
const int Date::tians[]={ 0, 31, 59, 89, 120, 150, 181, 212, 242, 273, 303, 334 };
很明显的错误,你在类中的声明:
static const int tians[];
其中那个tians[]相当于*tians,是个指针,所以你当然不能用花括号这么赋值,至少应该先new一下吧,把它变成一个数组,然后在依次赋值……

建议你还是重新设计那个类吧。