main.cpp
#include "server.h"
void main()
{
}
packet.h
#pragma once
#ifndef _PACKET_H
#define _PACKET_H
..
#endif
server.h
#pragma once
#ifndef _SERVER_H
#define _SERVER_H
#include "packet.h"
..
#endif
Список ошибок:
Ошибка LNK2005 "public: virtual void __thiscall IncomingAuth::handler(class Parcer &)" (?handler@IncomingAuth@@UAEXAAVParcer@@@Z) уже определен в main.obj EmulatorTop C:\Users\Ilya\Documents\Visual Studio 2015\Projects\EmulatorTop\ThreadEvents\server.obj
Если изменить main, то компилируется.
main.cpp
#include "packet.h"
void main()
{
}
Компилятор выдает сообщения об ошибках специально для вас, чтобы вы их читали. Данное сообщение об ошибке, выдаваемое при линковке единиц компиляции, очень ясное: функция handler определена в двух единицах компиляции.
Скорей всего она определена в заголовочном файле server.h и при этом не является встраиваемой, то есть не имеет спецификатора функции inline.
Либо уберите определение функции из заголовка, либо объявите ее со спецификатором inline.
Имейте в виду, что хотя компилятор MS VC++ компилирует такое объявление функции main, как
void main()
оно не соответствует стандарту C++. Согласно стандарту функция main без параметров должна быть объявлена как
int main()
Продвижение своими сайтами как стратегия роста и независимости