@azaznioo

Почему происходит ошибка при обращении к полю статического класса?

Здравствуйте, есть классы с заголовками.

Класс LOGVOTING
#pragma once
#include "Fraction.h"
#include "vector"
using namespace std;
static class LogVoting
{
public:
 
    static  vector RegisteredDeputy;
    static      vector RegisteredFraction;
};

DEPUTY
#pragma once
#include "GovernmentEmployee.h"
#include "Human.h"

class Deputy : public GovernmentEmployee, public Human
{
public:
    Deputy(){ NumberOfPlaces = 0; };
    Deputy(unsigned number );
    Deputy(unsigned number, bool immunity, int age, string name, string surname, PeopleGender gender);
    virtual ~Deputy();

    unsigned get_Number();
    bool set_Number(int number);

protected:
    unsigned NumberOfPlaces;

};
FRACTION
#pragma once
#include "Deputy.h"
#include "vector"

class Fraction
{
public:
    Fraction();
    Fraction(string name, Deputy *leader,unsigned maxCountMembers);
    ~Fraction();

    bool set_Name(string name);
    string get_Name();
    unsigned get_MaxCountMembers();

    Deputy* get_Leader();
    bool set_Leader(Deputy *deputy);

    bool AddToDeputsList(Deputy* deputy);
    void DeleteDeputsFromList(Deputy * deputy);
protected:
    unsigned MaxCountMembers;
    string Name;
    vector DeputyList;
    Deputy  *Leader;
};


И при таком обращении LogVoting::RegisteredDeputy выдается куча ошибок вида:
Ошибка 12 error LNK2020: эхЁрчЁх°хээр ыхъёхьр (0A000438) "public: static class std::vector > LogVoting::RegisteredDeputy" (?RegisteredDeputy@LogVoting@@2V?$vector@PAVDeputy@@V?$allocator@PAVDeputy@@@std@@@std@@A)
  • Вопрос задан
  • 384 просмотра
Пригласить эксперта
Ответы на вопрос 3
GavriKos
@GavriKos
Поставьте английскую студию - и она вполне внятно вам скажет в чем проблема. А еще укажите что вы за тип в векторе храните то.
Ответ написан
@vilgeforce
Раздолбай и программист
Нужна инициализация static-member'ов.
Ответ написан
@Mercury13
Программист на «си с крестами» и не только
Дело в том, что static-член в теле класса — это только заголовок, говорящий, что такое есть, но не создающий ни кода, ни данных. Эквивалент extern. Где-то в CPP (т.е. в одной и только в одной единице компиляции — не в .h!) нужны…

std::vector LogVoting::RegisteredDeputy;

И так далее.

Если этим полям нужен нестандартный конструктор — пожалуйста…
std::vector LogVoting::RegisteredDeputy(42);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы