Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,837
Записей в блоге: 4

Получить указатель на член функции класса и поместить в массив указателей на функции

15.06.2021, 04:52. Показов 1316. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class objsign_{public:
void(objsign_::*objsign__)(char);
 
HANDLE catalog;DWORD signal;
 
void Sign_Obj_Op(char*str,long deystv=FILE_NOTIFY_CHANGE_LAST_WRITE){
catalog=FindFirstChangeNotificationA(str,0,deystv);};
 
void Work_Sign_Obj(char ind=0){
signal=WaitForSingleObject(catalog,1000);
if(!signal){//....
cout<<"событие "<<signal<<en;}cout<<"событие "<<signal<<en;
FindNextChangeNotification(catalog);
};
 
void Sign_Obj_Cl(){
FindCloseChangeNotification(catalog);};
objsign_(){
objsign__=&objsign_::Work_Sign_Obj;
};
~objsign_(){};
}objsign;
void(*proced_tim[2])(char);
Вызов в _tmain
Напрямую конечно не работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
//так тоже не работает
void(objsign_::*t)(char)=&objsign_::Work_Sign_Obj;
objsign_ * p = new objsign_;
 
proced_tim[0]=(decltype(*proced_tim))t;
//так тоже не работает
proced_tim[0]=(objsign.*objsign.objsign__);//Очень странно что не берёт указатель хотя раз именованный работает как функция пример ниже
objsign.Sign_Obj_Op("C:\\Users\\123\\Desktop\\Новая папка (2)");
for(;;){//258 сигнальное состояние/0 произошло изменение
(objsign.*objsign.objsign__)(12);
//(p->*t)(12);тоже не работает быстро бежит
}
objsign.Sign_Obj_Cl();
Написанное выше только для примера это наброски.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.06.2021, 04:52
Ответы с готовыми решениями:

Объявить массив из N указателей на функции, возвращающих указатели на функции, возвращающие указатель на char
Задание: Объявить массив из N указателей на функции, возвращающих указатели на функции, возвращающие указатель на char. Можно...

Получить массив char и его размер из функции - Указатель не меняется вне функции
Помогите пожалуйста разобраться в чём проблема. Добавлено через 34 минуты Помогите пожалуйста разобраться в чём проблема. Нужно...

Массив указателей на функции-члены класса
Задача заключается в том, что в private надо создать статическую переменную символьного типа, в protected просто переменные вещественного...

8
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
15.06.2021, 05:16
Почему не сделать proced_tim массивом указателей на члены?
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
15.06.2021, 05:39
Цитата Сообщение от Nexi99 Посмотреть сообщение
void(objsign_::*objsign__)(char);
эта строчка что означает?
0
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
15.06.2021, 05:45
Вероятно, указатель на функцию-член класса.
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,837
Записей в блоге: 4
15.06.2021, 06:08  [ТС]
Цитата Сообщение от politoto Посмотреть сообщение
Вероятно, указатель на функцию-член класса.
Цитата Сообщение от _stanislav Посмотреть сообщение
эта строчка что означает?
Да внутренний указатель. Но в данном случае почему-то даже он не прокатывает.

Добавлено через 1 минуту
Цитата Сообщение от politoto Посмотреть сообщение
Почему не сделать proced_tim массивом указателей на члены?
Нельзя мне нужен внешний автономный массив. Да и к тому же у меня уже есть такой массив пользователь выше спросил.

Добавлено через 14 минут
Цитата Сообщение от _stanislav Посмотреть сообщение
эта строчка что означает?
Вроде тут брал Массив указателей на функции-члены класса
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
15.06.2021, 09:05
Цитата Сообщение от Nexi99 Посмотреть сообщение
Получить указатель на член функции класса и поместить в массив указателей на функции
Теория: Указатели на функции-члены и реализация самых быстрых делегатов на С++
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,837
Записей в блоге: 4
15.06.2021, 12:10  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
Теория: Указатели на функции-члены и реализация самых быстрых делегатов на С++
Если я правильно понял статью то указатель создавать можно а передавать его куда-то(например в массив указателей на функции) нельзя. Да я и привёл правильный пример выше
объявил
C++
1
2
3
4
5
6
7
void(objsign_::*objsign__)(char);
//инициализация
objsign__=&objsign_::Work_Sign_Obj;
//2ой пример 
void(objsign_::*t)(char)=&objsign_::Work_Sign_Obj;
//вызов
(objsign.*t)(12);
так что либо выбросить класс, либо как написал админ нужно создать один свободный объект класса и там реализовать массив указателей но он будет только на члены а мне нужно чтобы всё брало. Посоветуйте статью про статические библиотеки где всё описано, как её создать и подключить, я урывками читал и не понял до конца.

Добавлено через 2 минуты
Можно внутри класса объявить указатели на функции укомплектовать их и тогда строить массив строго на указателях на члены, в статье кстати автор об этом упоминал да я такое делал уже тоже.
0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
15.06.2021, 16:49
Цитата Сообщение от Nexi99 Посмотреть сообщение
Если я правильно понял статью то указатель создавать можно а передавать его куда-то(например в массив указателей на функции) нельзя.
указатель на функцию класса бесполезен без объекта класса, так что где бы ты не использовал указатель на функцию член, тебе нужен this класса указателя функции члена .
0
143 / 27 / 4
Регистрация: 06.05.2019
Сообщений: 1,837
Записей в блоге: 4
15.06.2021, 20:03  [ТС]
Цитата Сообщение от _stanislav Посмотреть сообщение
указатель на функцию класса бесполезен без объекта класса, так что где бы ты не использовал указатель на функцию член, тебе нужен this класса указателя функции члена
Да но у меня же есть объект класса objsign. Мне было бы достаточно иметь один объект и тащить такие указатели из этого объекта, да и к тому же объект может быть динамическим, но я смотрю что туго. По этой причине я всегда не любил классы, да и без причины стараюсь их попусту не использовать.
В общем придумал как по другому сделать, так что можно считать что вопрос исчерпан, раз так нельзя так нельзя.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.06.2021, 20:03
Помогаю со студенческими работами здесь

Определить указатель на поля класса (для любого типа полей) и указатель на функции класса
Помогите пожалуйста доделать код! На основе класса , разработать класс , содержащий дополнительно к имеющимся полей и функций: - Поле,...

Как из обыной функции вызвать функции член класса?
Требуется установить таймер. При компиляции выдаётся ошибка. Как ее решить? void handlук(int signo) { cTimer.run; } ...

Как вернуть из функции указатель на массив элементов класса
Здравствуйте! Возникла такая проблема. Есть класс, созданный мной. Функция формирует массив элементов этого класса (массив...

Массив указателей на функции, как аргумент функции. Вызов функции
Добрый день друзья. Есть вот такой код #include &lt;iostream&gt; using namespace std; double add(double, double); double...

Получить указатель на массив указателей
Есть массив инициализированных указателей: Result* res; for (int i=0;i&lt;100; i++) { res=new Result(); } Подскажите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru