partoftheworlD Опубликовано 28 декабря, 2016 Поделиться Опубликовано 28 декабря, 2016 Переписываю один из своих читов из dll в exe, т.е без инжектирования в игру. Возникла проблема, при чтении адреса начала класса с помощью шаблонной функции. Это мы устанавливаем адрес для нашего класса: C_LocalPlayerBaseOffsets* c_LocalPlayerBaseOffsets = reinterpret_cast<C_LocalPlayerBaseOffsets*>(func->getLocalBase()); Если по обычному читать, то все работает: int health = 0; ReadProcessMemory(memory->hProcess, reinterpret_cast<PBYTE*>(&c_LocalPlayerBaseOffsets->m_iHealth), &health, 4, 0); Если использовать шаблон, то получаю ошибку "невозможно преобразовать аргумент 1 из "int *" в "DWORD": memory->ReadMem<int>(&c_LocalPlayerBaseOffsets->m_iHealth); Сама шаблонная функции: Скрытый текст template <class cData> cData ReadMem(DWORD dwAddress) { cData cRead; ReadProcessMemory(hProcess, reinterpret_cast<PBYTE*>(dwAddress), &cRead, sizeof(cData), 0); return cRead; } Может кто сталкивался с подобным? Ссылка на комментарий Поделиться на другие сайты Поделиться
Dino Опубликовано 28 декабря, 2016 Поделиться Опубликовано 28 декабря, 2016 memory->ReadMem<int>(&c_LocalPlayerBaseOffsets->m_iHealth); ты адрес переменной передаешь, следовательно и принимать должен адрес Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 28 декабря, 2016 Автор Поделиться Опубликовано 28 декабря, 2016 (изменено) 2 минуты назад, Dino сказал: ты адрес переменной передаешь, следовательно и принимать должен адрес Так я его передают, чтобы считать его и вернуть значение в int. шаблон возвращает буфер. Изменено 28 декабря, 2016 пользователем partoftheworlD Ссылка на комментарий Поделиться на другие сайты Поделиться
Dino Опубликовано 28 декабря, 2016 Поделиться Опубликовано 28 декабря, 2016 7 минут назад, partoftheworlD сказал: Так я его передают, чтобы считать его и вернуть значение в int. ты используешь оператор взятия адреса & , затем передаешь его в функцию, но функция у тебя принимает только значения типа DWORD, от сюда и происходит конфликт. Помимо прочего ты его еще и не разыменовал. 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 28 декабря, 2016 Автор Поделиться Опубликовано 28 декабря, 2016 23 минуты назад, Dino сказал: ты используешь оператор взятия адреса & , затем передаешь его в функцию, но функция у тебя принимает только значения типа DWORD, от сюда и происходит конфликт. Помимо прочего ты его еще и не разыменовал. Все спасибо, проблема решена. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения