Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Visual C++] LNK2001

Ostatnio zmodyfikowano 2017-04-22 23:59
Autor Wiadomość
Kinexity
Temat założony przez niniejszego użytkownika
[Visual C++] LNK2001
» 2017-04-22 22:27:50
Witam wszystkich!
W moim programie występuje błąd kompilacji LNK2001, opierający się o nie rozpoznanie zmiennej statycznej. Prosiłbym o pomoc.

Deklaracja z pliku nagłówkowego (podkreślę, że to nie jest cały kod nagłówka):

C/C++
#pragma once
class C_Object
{
public:
    static unsigned int duration;
    C_Object();
    ~C_Object();
};

Log kompilatora:

LNK2001      nierozpoznany symbol zewnętrzny "public: static unsigned int C_Object::duration" (?duration@C_Object@@2IA)       C_Object.obj
P-160379
Bielan
» 2017-04-22 22:31:09
Masz deklarację zmiennej, gdzie definicja?
P-160380
Kinexity
Temat założony przez niniejszego użytkownika
» 2017-04-22 22:44:50
To pytanie zabrzmi głupio: Co rozumiesz przez definicję zmiennej?
P-160381
jankowalski25
» 2017-04-22 23:40:56
Co rozumiesz przez definicję zmiennej?
C/C++
extern int a;
a = 5;
Robisz coś takiego, rozumiesz? W przypadku zwykłej zmiennej należy wpisać
int a;
, ewentualnie od razu można nadać wartość, na przykład
int a = 5;
. Jeśli chodzi o zmienne statyczne w klasie, to zwykle wystarczy dołożyć odpowiednią przestrzeń nazw (sama nazwa nie wystarczy, bo wyjdzie wtedy zmienna globalna), a całą deklarację definicję można wstawić do pliku źródłowego (razem z definicjami metod).

Dopisano:
Chyba trochę niejasno napisałem, w kursie jest to lepiej wyjaśnione. Chodzi o to, że sama deklaracja nie wystarczy i jedynie informuje o tym, że chcesz mieć taką zmienną. Musisz jeszcze dopisać definicję, aby można było poprawnie utworzyć obiekt.
P-160383
karambaHZP
» 2017-04-22 23:42:29
P-160384
Kinexity
Temat założony przez niniejszego użytkownika
» 2017-04-22 23:59:40
Dzięki wszystkim. Już działa.
P-160385
« 1 »
  Strona 1 z 1