Unresolved external symbol - atrybut statyczny klasy

0

Witam,

Podczas kompilacji pojawia mi się taki błąd:

error LNK2001: unresolved external symbol "private: static int Policy::countPolicies" (?countPolicies@Policy@@0HA)

Chodzi o to, że w klasie Policy mam statyczną zmienną countPolicies, która zawiera aktualną liczbę wszystkich polis. Posiadam ją dlatego, iż później id każdej polisy tworzę przypisując mu wartość o jeden większą od aktualnej wartości countPolicies. Na początku programu za pomocą statycznej metody setCountPolicies przypisuje zmiennej countPolicies wartość 0. I chyba tu gdzieś jest problem, sam do końca nie wiem.

Ważne fragmenty kodu:

class Policy {

	private:
		static int countPolicies;
                // ciąg dalszy
        public:
		Policy() {

			this->id = countPolicies + 1;

		};
		void static setCountPolicies(int n) {
			countPolicies = n;
		};

};

Policy::setCountPolicies(0);

Nie do końca sam mogę zlokalizować ten błąd, bo kompilator na niego nie wskazuje, a mi brak po prostu jeszcze doświadczenia w C++.

0

Pewnie chodzi o to że nie inicjalizujesz zmiennej statycznej. Dopisz:

 int Policy::countPolicies = 0;
0

Klasyczny błąd ;) Musisz gdzieś zdefiniować tą zmienną statyczną. Zapis jaki przedstawiłeś to tylko deklaracja (czyli nigdzie fizycznie tej zmiennej nie ma!). Musisz gdzieś napisać:

int Policy::countPolicies;

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.