为啥运行不了,求解!

为什么运行不了,求解!!!
#include <iostream>
#include <iomanip>

using namespace std;

class MYDATE{
public:
const static int td1y;
const static int td4y;
const static int td100y;
const static int td400y;
const static char dom[12];
const static short tdom[12];
const static char* const dowName[7];
// 星期显示控制标志(默认值false-不显示)
static bool dowFlag;
static int Noly(int year);
static int Dom(int year, int month);
static int Dow(int year, int month, int day);
static int Tdoy(int year, int month, int day);
static long TotalDays(int year, int month, int day);
static bool IsLeap(int year);
static bool IsValid(int year, int month, int day);
MYDATE(int year, int month, int day);
void TotalDays(int totaldays);
int TotalDays()const;
int Tdoy()const;
int Dow()const;
void Set(int, int, int);
void Output() const;
private:
int year, month, day;
};

bool MYDATE::dowFlag = false;

const int MYDATE::td1y = 365;

const int MYDATE::td4y = 4 * 365 + 1;

const int MYDATE::td100y = 100 * 365 + 25 - 1;

const int MYDATE::td400y = 400 * 365 + 100 - 4 + 1;

const char MYDATE::dom[12] = {
31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
};

const short MYDATE::tdom[12] = {
0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334
};

const char* const MYDATE::dowName[7] = {
"星期一","星期二","星期三",
"星期四","星期五","星期六","星期天"
};

int MYDATE::Noly(int year)
{
return year/4 - year/100 + year/400;
}

int MYDATE::Tdoy(int year, int month, int day)
{
int n = day;
if(month >= 1 && month <= 12)
{
n += tdom[month - 1];
if(month > 2 && IsLeap(year))
{
n++;
}
}
return n;
}

long MYDATE::TotalDays(int year, int month, int day)
{
long t;
t = year - 1;
return t * td1y + Noly(t) + Tdoy(year, month, day);
}

void MYDATE::TotalDays(int totaldays)
{
int n;
if (totaldays <= 0)
{
cout << "不正确的参数!\n";
}
else
{
year = month = day = 1;
totaldays --;

// 按400年计算
n = totaldays / td400y;
year += n * 400;
totaldays -= n * td400y;

// 400年内按100年计算
n = totaldays / td100y;
if (n > 3) n = 3;
year += n * 100;
totaldays -= n * td100y;

// 100年内按4年计算
n = totaldays / td4y;
year += n * 4;
totaldays -= n * td4y;

// 4年内按1年计算
n = totaldays / td1y;
if (n > 3) n = 3;
year += n;
totaldays -= n * td1y;

// 1年内按月计算
while (totaldays >= (n = Dom(year, month)))
{
           totaldays -= n;
month ++;
}

// 1月内按日计算
day += totaldays;
}
}

int MYDATE::TotalDays() const
{
int t = year - 1;
return t * 365 + Noly(t) + Tdoy();
}

int MYDATE::Tdoy() const
{
int n = tdom[month - 1] + day;
if (month > 2 && IsLeap(year)) n ++;
return n;
}

int MYDATE::Dow() const
{
return TotalDays() % 7;
}

int MYDATE::Dow(int year, int month, int day)
{
return TotalDays(year, month, day) % 7;
}

int MYDATE::Dom(int year, int month)
{
int n = 0;
if(month >= 1 && month <= 12)
{
n = dom[month - 1];
if(month == 2 && IsLeap(year))
{
n++;
}
}
return n;
}

bool MYDATE::IsLeap(int year)
{
return year%4 == 0 && year%100 !=0 || year%400 == 0;
}

bool MYDATE::IsValid(int year, int month, int day)