Answer the question
In order to leave comments, you need to log in
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
Поставьте английскую студию - и она вполне внятно вам скажет в чем проблема. А еще укажите что вы за тип в векторе храните то.
Дело в том, что static-член в теле класса — это только заголовок, говорящий, что такое есть, но не создающий ни кода, ни данных. Эквивалент extern. Где-то в CPP (т.е. в одной и только в одной единице компиляции — не в .h!) нужны…
И так далее.
Если этим полям нужен нестандартный конструктор — пожалуйста…std::vector LogVoting::RegisteredDeputy(42);
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question