2015-07-05 4 views
-3

Я написал программу со статической переменной. Тем не менее, я получаю следующее сообщение об ошибке:Ошибка компоновщика: неопределенная ссылка на

[Linker Error] C: /Users/prcm/Documents/Practice/junk.cpp: 8: неопределенные ссылка на `X :: а»

Вот код

#include <iostream> 

using namespace std; 

class X { 
    public:  
     static const int a; 

    public: 
     static int getA() { return a; }  
}; 

int main() {  
    cout<< X::getA()<< endl; 
    return 0; 
} 
+0

Вы не сделали экземпляр X, и не является статическим. – ross

+0

@ross: Huh? –

+0

Ну, ошибка верна: вы никогда не определяли 'X :: a'. Какую книгу на C++ вы используете? –

ответ

0

это не правильно, вы никогда не Defined X::a.

Поместите следующую строку после объявления класса: const int X::a = 0;

+0

_ «Поместите следующую строку после объявления класса: ...» _ Это может не работать внутри заголовочных файлов, что приводит к ошибкам с ошибками нескольких символов. Следует обеспечить, чтобы это заявление появилось в уникальной единицы перевода. –

+1

Я имел в виду его пример, который действительно выглядит как монолитный файл. Помещение этой строки после объявления класса работает там. – skypjack

+0

Я только что предупредил, не сказал, что вы ошибаетесь. –

Смежные вопросы