这个 init()成员函数中总显示 y,m,d 未定义的错误(VS2013)
											书上的一个程序,书上的解释跟这个实际情况不一样啊。。
	
		
			
		
	
 程序代码:
程序代码:
#include<iostream>
#include<iomanip>
using namespace std;
class Date
{
    int year, month, day;
    void init();
public:
    Date(const string& s);
    Date(int y = 2000, int m = 1, int d = 1);
    bool isLeapYear() const;
    friend ostream& operator<<(ostream& o, const Date& d);
};
void Date::init()
{
    if (y > 5000 || y < 1 || m<1 || m>12 || d<1 || d>31)
        exit(1);
}
Date::Date(const string& s)
{
    year = atoi(s.substr(0, 4).c_str());
    month = atoi(s.substr(5, 2).c_str());
    day = atoi(s.substr(8, 2).c_str());
    init();
}
Date::Date(int y, int m, int d)
{
    year = y, month = m, day = d;
    init();
}
bool Date::isLeapYear() const
{
    return (year % 4 == 0 && year % 100) || year % 400 == 0;
}
ostream& operator<<(ostream& o, const Date& d)
{
    o << setfill('0') << setw(4) << d.year << '-' << setw(2) << d.month << '-';
    return o << setw(2) << d.day << '\n' << setfill(' ');
}
int main()
{
    Date c("2005-12-28");
    Date d(2003, 12, 6);
    Date e(2002);
    Date f(2002, 12);
    Date g;
    cout << c << d << e << f << g;
}										
					
	


 
											






 
	    

 
	
