c++ - 类(class)问题,加一天

标签 c++ date linker

我正在尝试使 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 类型,所以会有一个转换问题。

如有任何帮助,我们将不胜感激 - 谢谢。

附言不要担心在月底添加天数。这是稍后要实现的事情。

最佳答案

链接器错误是因为您没有定义构造函数。

Date::Date( int yr, int mo, int day ) : y(year), m(month), d(day)
{
}

对于 add_day 问题:您说得对,您需要更改返回类型。它应该返回一个 Date 对象。您可以构造一个新的 Date 对象并返回它并增加日期值,或者只增加日期值并返回 *this。

关于c++ - 类(class)问题,加一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1126812/

相关文章:

C++ winApi 无法处理子窗口事件

c++ - boost 池库 : How to reuse created objects?

c++ - 为什么 std::bad_cast 被 boost::locale 抛出?

sql - 该月的每日平均值(需要该月的天数)

c - 有没有办法获取 .exe 中包含的静态链接函数并重用它们?

c++ - 如何正确继承std::iterator

javascript - Momentjs 中的 FireFox 日期无效

Mysql 选择日期和可能的情况

c - Xilinx SDK 中对 dlopen.dlsym、dlclose 的 undefined reference

c++ - 模板方法的 undefined reference 错误