我正在努力使add_day
函数正常工作,但我遇到了一些麻烦。请注意,我无法对struct
进行任何更改(这非常简单),因为练习的重点是使程序按照给定的内容工作。该代码是课堂问题,增加一天
#include "std_lib_facilities.h"
struct Date{
int y, m, d;
Date(int y, int m, int d);
void add_day(int n);
};
void Date::add_day(int n)
{
d+=n;
}
ostream& operator<<(ostream& os, const Date& d)
{
if(d.m<1 || d.m>12 || d.d<1 || d.d>31) cout << "Invalid date: ";
return os << '(' << d.y
<< ',' << d.m
<< ',' << d.d << ')';
}
int main()
{
Date today(1978,6,25);
today.add_day(1);
cout << today << endl;
keep_window_open();
}
我收到说undefined reference to Date::Date(int,int,int)
链接错误,但我无法弄清楚什么是错的。这似乎是与Date
构造函数有关,但我不知道是什么。
我也想在行代码添加明天像
Date tomorrow = today.add_day(1);
但我有一种感觉,因为add_day是void类型会有一个转换的问题。
任何帮助将不胜感激 - 谢谢。
P.S.不要担心在本月底添加日期。这件事将在稍后实施。
一般来说,我们会返回一个const引用而不是复制,相同的功能,但更特别有效地复制费时(这里没有太多问题)。 – DeusAduro 2009-07-14 17:40:12