• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Ошибка компиляции!
dimakpro
Центурион
При компиляции возникает ошибка в  этой строке : 

Ошибка 69 error C2664: "WorldSession::WorldSession(const WorldSession &)": невозможно преобразовать аргумент 2 из "const char [1]" в "std::shared_ptr<WorldSocket>" D:\Full core\335source-mastercrazy\src\server\game\Handlers\CharacterHandler.cpp 1102 1 game

74 IntelliSense: отсутствуют экземпляры конструктора "WorldSession::WorldSession", соответствующие списку аргументов
            типы аргументов: (uint32, const char [1], int, AccountTypes, uint8, int, LocaleConstant, int, bool) d:\Full core\335source-mastercrazy\src\server\game\Handlers\CharacterHandler.cpp 1102 45 game

   
Код
WorldSession* botSession = new WorldSession(lqh->GetAccountId(), "", NULL, masterSession->GetSecurity(), masterSession->Expansion(), 0, masterSession->GetSessionDbcLocale(), 0, false);

Продажа сервера wow blood-fire (WoW 3.3.5a + Lua engine) 6500 руб
---->https://vk.com/jimteck<----
Сообщение # 1 отредактировано dimakpro - Суббота, 16.01.2016, 17:58
p620
Маршал
Прошу прощения, но в моем представлении человек, продающий готовые сборки, должен хотя бы знать язык, на котором написано ядро.
И ведь если Вы его не знаете, то и толку от моего объяснения будет немного. Но я все-таки напишу.

Выделенная Вами строка - инициализация указателя на объект типа WorldSession адресом, полученным в результате выделения памяти из кучи (heap / dynamic (runtime) allocation), на которой создается новый объект типа WorldSession. Все, что стоит внутри скобок, - аргументы, которые передаются конструктору этого типа (если просто, конструктор - функция, вызываемая относительно объекта, при его создании). Стоит отметить, что оператор new, видимо, перегружен для данного типа, иначе, раз здесь не (std::nothrow) использование, в случае неудачного выделения памяти выбросится исключение std::bad_alloc, а возвращение nullptr (который и проверяют следующей инструкцией в коде) не произойдет. Если он не перегружен - возможно Вам стоит посмотреть и этот момент. Конкретная же ошибка компиляции заключается в том, что одним из своих параметров (вторым) конструктор ожидает получать шаблонный объект (template class/struct) типа std::shared_ptr<WorldSocket> (один из типов стандартных "умных указателей" (smart pointer'ов)), Вы же передаете ему const char* (указатель на строку в статической read-only области памяти, состоящей из одного лишь в вашем случае символа: '\0'). Неявное преобразование типов, допустимое для выполнения компилятором, в данной ситуации невозможно, и он просто-напросто сообщает об ошибке и прерывает компиляцию данного файла.

Из возможных "быстрых" решений могу предложить Вам перепроверить, весь ли патч Вы накатили (возможно, что он предполагал изменение описания класса WorldSession, добавляя новую версию конструктора, на которую здесь и ссылается, а Вы это упустили). Если точно уверены, что весь, и что не может быть никаких несовместимостей версий ядра и патча / ошибки Вашего авторства, то остается лишь один вариант: ошибка писавшего патч, хотя такой вариант крайне маловероятен (хотя предоставленный Вами кусок и не лишен иных сомнительных приемов написания).
Сообщение # 2 написано 16.01.2016 в 23:43
dimakpro
Центурион
p620, спасибо) Буду решать проблему),до этого было ещ 25 ошибок,но они все легко исправились,кроме этой)
Продажа сервера wow blood-fire (WoW 3.3.5a + Lua engine) 6500 руб
---->https://vk.com/jimteck<----
Сообщение # 3 написано 17.01.2016 в 00:41
  • Страница 1 из 1
  • 1
Поиск: