A
A
azaznioo2015-04-22 22:31:19
Programming
azaznioo, 2015-04-22 22:31:19

Why does an error occur when accessing a field of a static class?

Hello, there are classes with headers.
LOGVOTING class

#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" ([email protected]@@[email protected]@@[email protected]@@@[email protected]@@[email protected]@A)

Answer the question

In order to leave comments, you need to log in

3 answer(s)
G
GavriKos, 2015-04-22
@GavriKos

Поставьте английскую студию - и она вполне внятно вам скажет в чем проблема. А еще укажите что вы за тип в векторе храните то.

Владимир Мартьянов, 2015-04-22
@vilgeforce

Нужна инициализация static-member'ов.

M
Mercury13, 2015-04-23
@Mercury13

Дело в том, что static-член в теле класса — это только заголовок, говорящий, что такое есть, но не создающий ни кода, ни данных. Эквивалент extern. Где-то в CPP (т.е. в одной и только в одной единице компиляции — не в .h!) нужны…
И так далее.
Если этим полям нужен нестандартный конструктор — пожалуйста…
std::vector LogVoting::RegisteredDeputy(42);

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question