|
|
Модератор форума: Dimitro |
Форум TrinityCore [TrinityCore] Help Ошибка компиляции! (Ошибка) |
Ошибка компиляции! |
При компиляции возникает ошибка в этой строке :
Ошибка 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<---- |
Прошу прощения, но в моем представлении человек, продающий готовые сборки, должен хотя бы знать язык, на котором написано ядро.
И ведь если Вы его не знаете, то и толку от моего объяснения будет немного. Но я все-таки напишу. Выделенная Вами строка - инициализация указателя на объект типа 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
|
| |||
| |||