未定义的引用

Undefined reference

本文关键字:引用 未定义      更新时间:2023-10-16

我正在尝试编译并运行下面的简单代码

#include <iostream>

class Date {
    int d,m,y;
    static Date default_date;
public:
    Date(int dd=0, int mm=0, int yy=0);
    static void set_default(int d, int m, int y);
};
Date::Date(int dd, int mm, int yy)
{
    d = dd ? dd : default_date.d;
    m = mm ? mm : default_date.m;
    y = yy ? yy : default_date.y;
}
void Date::set_default(int d, int m, int y)
{
    default_date = {d, m,y};
}
void f()
{
    Date::set_default(4,5,1945);
}
int main()
{
    f();
    return 0;
}

但是我得到一个链接器错误:

`error: undefined reference to `Date::default_date'`

我正在使用MinGW 4.8 的QT创建者

你能评论一下出了什么问题吗?

您需要在实现文件中定义静态成员。因此,对应于以下声明,

static Date default_date;

初始化进入实现文件

Date Date::default_date(12,12,2014);