C2065 Employee: необъявленный идентификатор

Factory.h

#pragma once
#include <iostream>
#include <vector>
#include "Employee.h"

using namespace std;

class Factory
{
private:
    string name;
    int capacity;
    vector<Employee*> stack;
public:
    Factory();
    Factory(string name, int capacity);
    ~Factory();
    int GetCapacity();
    void ShowEmployeeList();
    string GetName();
    void virtual ShowFactoryInfo();
    string virtual GetType();
};

Ошибки:

C2065 Employee: необъявленный идентификатор EmployeeManagment Factory.h 13
C2059 синтаксическая ошибка: > EmployeeManagment Factory.h 13

Employee.h

#pragma once
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include "Enums.h"
#include "Utils.h"
#include "Factory.h"

using namespace std;

class Employee
{
private:
    string fio;
    int number;
    int age;
    int stage;
    int salary;
    vector<Factory*> workplace;

public:
    string GetFIO();
    int GetNumber();
    int GetAge();
    int GetStage();
    int GetSalary();
    void CalculateSalary(int);
    virtual string GetType();
    virtual void DisplayEmployee();
    Employee();
    Employee(string, int, int, int);
    ~Employee();
};

Ошибки:

C2065 Factory: необъявленный идентификатор EmployeeManagment Employee.h 20
C2059 синтаксическая ошибка: > EmployeeManagment Employee.h 20


Ответы (1 шт):

Автор решения: HolyBlackCat

У вас циклическая зависимость - хедеры инклудят друг друга. Хотя бы один из двух #include нужно убрать, а лучше оба. Чтобы компилятор после этого не ругался на необъявленный идентификатор - добавить предварительное объявление соотвествующего класса: class Employee; и т. п.

→ Ссылка