Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Вызов функции-члена класса по адресу в памяти - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Угадайка с наименьшем количеством шагов http://www.cyberforum.ru/cpp-beginners/thread1496007.html
Доброго времени суток , сижу сижу , не выходит у меня что-то. Игра угадайка , пользователь вводит число от 1 до 100 , компьютер должен угадывать с наименьшем количеством шагов. К примеру. Я выбрал...
C++ Как передать в функцию русский текст Есть такие функции Append ( const uint16 * aText,int32 aLength = -1 ) Append ( const char * aText,int32 aLength = -1,int32 aCodePage = 0 ); Append the eight-bit string aText. If... http://www.cyberforum.ru/cpp-beginners/thread1495998.html
Создать функции добавления и удаления узла из бинарного дерева C++
Требуется описать функции добавления и удаления узла в бинарном дереве. Вот исходный код. Извиняюсь за комментарии: #include <cstddef> # include <conio.h> #include <stdio.h> #include <iostream>...
C++ бинарные деревья для начинающих
Помогите пожалуйста! нужно написать бинарное дерево на задания: 1. Реализуйте программу, в которой выполняются все основные операции с бинарным деревом. 2. Найдите количество четных...
C++ Постройте таблицу значений для функции http://www.cyberforum.ru/cpp-beginners/thread1495926.html
Постройте таблицу значений функции для . Решить задачу тремя способами: использовать операторы for, while, do while.
C++ Определить лежит ли точка внутри, вне или на границе заштрихованной области Задание № 2 Дана точка на плоскости с координатами (x, y). Составить программу, которая будет выводить на экран одно из сообщений «Да», «Нет», «На границе». В зависимости от т ого, лежит ли точка... подробнее

Показать сообщение отдельно
sion5
1 / 1 / 0
Регистрация: 15.10.2013
Сообщений: 42
09.07.2015, 22:10  [ТС]
Немного подразобрался... Спасибо за советы и ссылки.
"реверс-инжениринг" макросов от SKSE тоже помог.
Большой затык был с кастингом void указателя в указатель на функцию-член класса. Просто так каститься не хотел ни в какую... Нагуглил много сообщений, в которых пишут, что так кастить и нельзя вовсе. Мол, у указателей на член класса даже размер другой (8 вместо 4).
Потом оказалось, что таки можно, если осторожно... Во всяком случае, иногда. Скастить можно через юнион или через указатель на указатель...

_Phonebook *_book = (_Phonebook *)(0x0022F238);

typedef void (_Phonebook::*printPhoneFunc)(const char *);

static const unsigned long long address = 0x004016D0;
printPhoneFunc *p = (printPhoneFunc *)&address;

(_book->*(*p))("Ragana");
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru