[ООП] Ошибка при компиляции многофайлового проекта

Начинающий
Статус
Оффлайн
Регистрация
30 Янв 2018
Сообщения
79
Реакции[?]
6
Поинты[?]
0
Здравствуйте.
Требуется создать большой проект с большим количеством классов, конечно, разбивая их на разные .cpp и .h файлы.
Но возникает проблема при компиляции такого проекта.
Оригинальный большой проект я скидывать не стал, а сделал тестовый проект с демонстрацией данной проблемы и минимальным количеством кода.
В каждом классе может, и чаще всего используются указатели/объекты других классов, которые определены в других файлах.
Среда программирования(Visual Studio Professional 2017) видит, что класс определен, но при компиляции выдает ошибку "неизвестный спецификатор переопределения".
Такая проблема со всеми файлами и классами.
Текст ошибки и все файлы проекта будут прикреплены ниже.
Пожалуйста, помогите, буду очень благодарен! =)

Текст ошибки компилятора:
Код:
1>------ Сборка начата: проект: Test Console, Конфигурация: Release x64 ------
1>first.cpp
1>c:\users\user\source\repos\test console\test console\second.h(7): error C3646: _class: неизвестный спецификатор переопределения
1>c:\users\user\source\repos\test console\test console\second.h(7): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\user\source\repos\test console\test console\main.h(10): error C3646: first: неизвестный спецификатор переопределения
1>c:\users\user\source\repos\test console\test console\main.h(10): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>main.cpp
1>c:\users\user\source\repos\test console\test console\first.h(7): error C3646: _class: неизвестный спецификатор переопределения
1>c:\users\user\source\repos\test console\test console\first.h(7): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>second.cpp
1>c:\users\user\source\repos\test console\test console\first.h(7): error C3646: _class: неизвестный спецификатор переопределения
1>c:\users\user\source\repos\test console\test console\first.h(7): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\users\user\source\repos\test console\test console\main.h(11): error C3646: second: неизвестный спецификатор переопределения
1>c:\users\user\source\repos\test console\test console\main.h(11): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>Сборка проекта "Test Console.vcxproj" завершена с ошибкой.
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========

main.h:
Код:
#pragma once
#include <Windows.h>
#include <iostream>

#include "first.h"
#include "second.h"

class MainClass {
public:
    FirstClass first;
    SecondClass second;
};

first.h:
Код:
#pragma once
#include "main.h"

class FirstClass {
public:
    int a = 1;
    SecondClass _class;
};

second.h:
Код:
#pragma once
#include "main.h"

class SecondClass {
public:
    int b = 2;
    FirstClass _class;
};

main.cpp:
Код:
#include "main.h"

MainClass mainClass;

int main() {
    printf("First: %d\n", mainClass.first.a);
    printf("Second: %d\n", mainClass.second.b);
    system("pause");
    return 0;
}

P.S: В файлах first.cpp и second.cpp находится лишь подключение соответствующих header-файлов.
Например:
first.cpp
Код:
#include "first.h"
 
Начинающий
Статус
Оффлайн
Регистрация
30 Янв 2018
Сообщения
79
Реакции[?]
6
Поинты[?]
0
Нет возможности пойти скайп или дискорд.
Не совсем понял, что ты просишь.
Вот ссылка на готовый проект с этими ошибками:
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
2015
Участник
Статус
Оффлайн
Регистрация
5 Янв 2018
Сообщения
644
Реакции[?]
174
Поинты[?]
0
Я имел в виду научи компилить
чел получается ты просишь научить тебя компилить, а взамен готов помочь с компилированием и исправлением этих ошибок :FailFish:
пиздец, убейся :FailFish:
 
Сверху Снизу