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

Передача указателя на функцию-член - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Замена четырехбитной комбинации на другую http://www.cyberforum.ru/cpp/thread1799854.html
Имеется поток, перенесенный на GPU после преобразованный в битовый поток. Необходимо заменить 4 бита на другие (правила перехода записаны в блокноте, формат файла *.mdt),со сдвижкой после каждого...
C++ перенести скрипт с Autoit на С++ Доброго всем времени суток Нуждаюсь в переносе небольшого скрипта с Autoit на С++ переписать на плюсы у самого знаний не хватает =( #include <SQLite.au3> #include <SQLite.dll.au3> ... http://www.cyberforum.ru/cpp/thread1799698.html
Запись видео с веб камеры C++
Новичок в этом деле. Я даже не знаю в какую тему мой вопрос опубликовать. Сейчас набираю теорию для программы. Попытался погуглить, ничего не нашёл(не знаю как вопрос задать). Вопрос следующий......
Нужен совет по способу реализации игры в словарь C++
Доброго времени суток, перейду сразу к делу. Есть идея программы - своеобразный тренер для изучения английских слов. То есть имеем такую программу: 1) Запускаем, выбираем файл со словами(либо...
C++ Замена функциям форматирования из CRT http://www.cyberforum.ru/cpp/thread1797177.html
Есть ли какая-нибудь замена функции vsnwprintf из CRT? StringC...VPrintfW внутри себя также вызывает ее. В итоге все сходится к __stdio_common_vsnwprintf из ucrtbase.dll. Не хочется заново подключать...
C++ Как парсить и как записать в json? Привет, никак не могу разобраться как подключить и работать с json в с++ какие библиотеки нужно подключить (желательно ссылку на них) и как парсить json, и как записать в json скиньте пример кода,... подробнее

Показать сообщение отдельно
Fulcrum_013
Заблокирован
02.09.2016, 00:55
Цитата Сообщение от Inversus Посмотреть сообщение
Я так понял не получится потому что нет универсального указателя на класс (типа void для функций) ?
Потому что указатель на метод объекта это реально два указателя - на код метода и на данные объекта. В таблице векторов прерываний место только под один. Можно занести в таблицу векторов прерываний адрес функции (это может быть и статический метод-посредник) которая вызовет нужный метод нужного объекта при этом сам указатель на объект установленный обработчиком хранить где то отдельно (не в таблице векторов прерываний, к примеру в статическом поле того же класса)

Добавлено через 17 минут
Цитата Сообщение от Inversus Посмотреть сообщение
Вообще связался с ООП в контроллере и теперь фигею - такие грабли вылазят. Нужно было все по старинке - функциями фигачить. Ощущение с родни тому как когда Я в юности понял что бейсика и паскаля не хватает для моих затей - только наоборот )
Вообще похоже пока что вопрос немного по другому строить надо - зачем вообще связались с контроллером (а с ООП в контроллере тем более). Вообще для того чтобы с контроллером работать а тем более с ООП нужно знать подкапотные дела устройства объектов и то что можно в векторах прерываний и т.п. разместить (фактически подкапотные дела контроллера). Стоит чуток глубже капнуть эту тему и все станет элементарно без всяких граблей. Сталкивался с обработкой прерываний под ДОС вкупе с ООП (на любом контроллере это будет аналогично ). Никаких граблей там при знании подкапотного устройства объекта нет. Так что стоит покапать немного в сторону как объект функциклит. На самом деле при вызове метода объекта ему передается один скрытый дополнительный параметр - именно этот указатель на данные на которые место в таблице прерываний не отведено. Т.е. стоит просто реализовать отдельное хранение этого указателя и вызов метода из обработчика прерывания и все ок, разве что кроме небольшого накладного расхода на еще один Indirect Call.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru