-
Автор темы
- #1
Здравствуйте.
Требуется создать большой проект с большим количеством классов, конечно, разбивая их на разные .cpp и .h файлы.
Но возникает проблема при компиляции такого проекта.
Оригинальный большой проект я скидывать не стал, а сделал тестовый проект с демонстрацией данной проблемы и минимальным количеством кода.
В каждом классе может, и чаще всего используются указатели/объекты других классов, которые определены в других файлах.
Среда программирования(Visual Studio Professional 2017) видит, что класс определен, но при компиляции выдает ошибку "неизвестный спецификатор переопределения".
Такая проблема со всеми файлами и классами.
Текст ошибки и все файлы проекта будут прикреплены ниже.
Пожалуйста, помогите, буду очень благодарен! =)
Текст ошибки компилятора:
main.h:
first.h:
second.h:
main.cpp:
P.S: В файлах first.cpp и second.cpp находится лишь подключение соответствующих header-файлов.
Например:
first.cpp
Требуется создать большой проект с большим количеством классов, конечно, разбивая их на разные .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"