Мне удалось получить то, что уже определено в ошибке .obj. Это структура моего проекта:
main.cpp
#include "main.h";
main.h
#include <iostream>
#include <string>
#include <sstream>
#include <boost/asio.hpp>
#include <boost/thread/thread.hpp>
#include "client.cpp"
client.cpp
#ifndef SOCKET_CLIENT_CLASS
#define SOCKET_CLIENT_CLASS
#ifndef BOOST_ASIO_HPP
#include <boost/asio.hpp>
#endif
/*CLASS DEFINITION HERE*/
#endif
Об этом жалуется компилятор:
main.obj: ошибка LNK2005: "public: bool __thiscall SocketClient:: read (int, char *)" (? read @SocketClient @@QAE_NHPAD @Z) уже в client.obj
Обратите внимание, что он жалуется на мой класс, а не на повышение. Интересно то, что когда я удаляю #include <boost/asio.hpp>
из client.cpp, я получаю ошибки, которые вы включаете в main.h тоже.
Как вы можете видеть, я не дважды определяю/включая мой класс, его включал ровно один раз в main.h. Итак, что здесь происходит?
Я прочитал этот ответ, но это не помогло, так как оно предполагает двойные включения. Возьмите этот факт в оглавление перед голосованием за дублирование, потому что это просто означает обезглавить меня без пощады.