2014-11-12 4 views
-1

Я пытаюсь скомпилировать и запустить простой код, приведенный нижеНеопределенная ссылка

#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'` 

Я использую Qt Creator с MinGW 4.8

Не могли бы вы прокомментировать, что не так?

+4

Вам нужен 'Date Дата :: default_date (/*...*/)' в одном из блоков перевода (файл cpp). Вы объявили это, но не определили 'default_data'. [См. Этот ответ] (http://stackoverflow.com/a/12574407/3747990). – Niall

ответ

1

Вам необходимо определить статические элементы в файле реализации. Так, соответствующие ниже декларации,

static Date default_date; 

intialisation идет в файле реализации

Date Date::default_date(12,12,2014); 
Смежные вопросы