Вы не должны включать исходные файлы cpp в другой файл cpp.
Это в основном нарушает Правило единого определения , что приводит к ошибкам переопределения.
Включите заголовочный файл с определением класса Util
в любой класс, для которого вы хотите создать его объекты.
По сути, ваш код должен быть организован таким образом (исключение: шаблонный код):
Util.h -----------> Содержит определение класса Util
действует как Интерфейс
Util.cpp -----------> Содержит реализацию класса Util
действует как реализация
Здесь, когда вы хотите создать объект класса Util
в любом из файлов cpp, вы включаете Util.h
в этот файл cpp, чтобы компилятор знал определение класса Util
.
Например:
Server.cpp
хочет создать объект Util
, тогда ваш Server.cpp
должен включать Util.h
как:
#include "Util.h"
Кроме того, не забудьте добавить Включить охрану в заголовочные файлы.
Если использование Util
другим исходным / заголовочным файлом ограничено созданием указателя на Util
, то вам не нужно включать заголовочный файл, вам нужно только Forwardнять класс Util
.