Указатели на функции.
В общем случае - приходилось работать с данным "явлением". Однако сейчас, я столкнулся с "указателем на функцию-член класса".
Погуглил и вот что выудил (спешу поделиться с общественностью): В моей программе (поток нафиг не по теме, но что-то придумать иного семпла, кроме как актуального кода не могу): класс MyCl* сожержит структуру MyStr (структура с параметрами потока, которым класс управляет); в структуре содержатся данные о том, какую функцию из родительского экземпляра класса MyCl поток (дескриптор которого является компонентом структуры MyStr, входящей в состав класса MyCl, и получающий экземпляр структуры MyStr как бестиповой указатель в момент создания) должен запускать (при определённом стечении обстоятельств). Т.к. хотелось иметь универсальный инструмент и конфигурировать его в момент задания MyStr, пришлось отказаться от явного обращения к функции по имени. Структура: Код:
class MyCl; Код:
class MyCl{ Код:
DWORD WINAPI ThreadFunction(PVOID); Как получить адрес функции: Код:
ControlThread.FunctionPtr=&MyCl::func1; Меняя эту строку, можно программировать поведение потока, не нагромождая конструкции из всех возможных case *-имена вымышлены, куски кода выкинуты для упрощения пониамния; в действительности код грамотно разбит на объявление и реализацию. |
Ответ: Указатели на функции.
Жутко накрученный пример в 1-ом посте. Вот попроще набросал:
Код:
#include <iostream> Сравни то же на Б3Д Код:
Type TObject |
Ответ: Указатели на функции.
в новом движке использую такой подход для вызова метода куллинга.
хотя есть мнение что кейс все равно будет быстрее. надо потестить |
Ответ: Указатели на функции.
Цитата:
Вот ещё занятная вещица: Без (да-да, я знаю, так делать не надо) приведения к типу void* указатель отображает единицу для всех трёх функций (или только у меня? :4to: ). |
Ответ: Указатели на функции.
Цитата:
без преобразования - единицы. |
Часовой пояс GMT +4, время: 11:27. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot