|
0 / 0 / 1
Регистрация: 29.06.2016
Сообщений: 110
|
||||||
Функция, возвращающая указатель на функцию25.02.2019, 21:59. Показов 13595. Ответов 25
Метки нет (Все метки)
Здравствуйте, у меня есть универсальная ф-ия, которая возвращает указатель на одну из трёх ф-ий. Каждая из тех трёх функций по-своему преобразует одномерный массив. Я не могу до конца понять, как это всё должно работать. В main() я создаю указатель на одну из трёх функций, затем вызываю универс. ф-ию, которая должна вернуть указатель на функцию. Подскажите, как это правильно реализовать и может ли вызываться другая функция, когда мы возвращаем указатель на неё из универс. ф-ии?
0
|
||||||
| 25.02.2019, 21:59 | |
|
Ответы с готовыми решениями:
25
Функция, возвращающая указатель |
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
||||||
| 25.02.2019, 22:31 | ||||||
|
Fossil121, Ну указатель можно как-то так вернуть
0
|
||||||
|
0 / 0 / 1
Регистрация: 29.06.2016
Сообщений: 110
|
|
| 25.02.2019, 22:35 [ТС] | |
|
Avaddon74, извините, не очень понимаю, что в main() происходит, если честно
0
|
|
|
Параллельный Кот
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
|
|||||||
| 25.02.2019, 22:41 | |||||||
Использовать std::function не красивее будет? Например:
2
|
|||||||
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
||
| 25.02.2019, 22:46 | ||
reinterpret_cast<void(*)()> приводит к типу указатель на функциюДобавлено через 3 минуты
0
|
||
|
Параллельный Кот
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
|
|||||||
| 25.02.2019, 22:51 | |||||||
На примере кода ТС, если никто не против.
3
|
|||||||
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
||||||
| 25.02.2019, 22:57 | ||||||
|
valen10, А я до этого не додумался
![]()
1
|
||||||
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|
| 25.02.2019, 23:03 | |
|
2
|
|
|
0 / 0 / 1
Регистрация: 29.06.2016
Сообщений: 110
|
|
| 25.02.2019, 23:03 [ТС] | |
|
valen10, а когда мы возвращаем из ф-ии указатель на ф-ию, другая ф-ия не вызывается?
0
|
|
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
||||||
| 25.02.2019, 23:06 | ||||||
|
или так
1
|
||||||
|
Параллельный Кот
1905 / 827 / 350
Регистрация: 25.03.2016
Сообщений: 2,045
|
||||
| 25.02.2019, 23:10 | ||||
getf(1)(x), первые скобки - аргумент для функции getf, вторые скобки - аргумент для вызова функции, указатель на которую вернет getf.Добавлено через 2 минуты
1
|
||||
|
0 / 0 / 1
Регистрация: 29.06.2016
Сообщений: 110
|
|
| 25.02.2019, 23:10 [ТС] | |
|
valen10, Azazel-San, Avaddon74, большое всем спасибо, выручили!
0
|
|
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
||||||||||||
| 25.02.2019, 23:38 | ||||||||||||
<type_traits>, которая позволяет получить указатель на указанный тип Т (или на тип Т на который указывает ссылка), правда не уверен что я верно объяснил.Добавлено через 5 минут valen10, отсюда можно и так написать
Avaddon74, ваш вариант может быть таким
reinterpret_cast, который на самом деле ничего не кастит, а только делает вид.
1
|
||||||||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
|||
| 26.02.2019, 00:16 | |||
![]() (*f)();. Указатель - параметр функции умрет в конце выражения (2), а в этом коде у него берется адрес и возвращается. Не надо так делать
1
|
|||
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|||||||
| 26.02.2019, 00:27 | |||||||
|
Добавлено через 27 секунд Не по теме: DrOffset, кста, у меня есть еще одна ошибка) Добавлено через 6 минут ![]() Добавлено через 1 минуту DrOffset, типо так?
0
|
|||||||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||||||||
| 26.02.2019, 00:36 | ||||||||
|
И программа, собранная GCC, кстати, на этом коде честно падает. Добавлено через 7 минут
____ Кстати, реализация не обязана гарантировать, что указатель на функцию поместится в void *, а до С++11 это и вовсе было UB. (это замечание к коду поста №2)
2
|
||||||||
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
|||
| 26.02.2019, 00:42 | |||
void*, то чего reinterpret_cast'a боятся?
0
|
|||
|
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
|
||
| 26.02.2019, 00:46 | ||
![]() Просто за искусственной вычурностью вашего примера это не сразу видно.
1
|
||
|
Mental handicap
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
|
||||
| 26.02.2019, 00:52 | ||||
![]() Узнал новое, это типо поигрался с указателями, кстати если писать ООП обертку над чистым Си, там где-то такие приседания через void* и происходят?Добавлено через 2 минуты
0
|
||||
|
571 / 353 / 133
Регистрация: 15.09.2017
Сообщений: 1,239
|
|||
| 26.02.2019, 00:55 | |||
|
Добавлено через 1 минуту если приложение компилируется в x32 то размер 4, а если в x64 то размер 8
0
|
|||
| 26.02.2019, 00:55 | |
|
Помогаю со студенческими работами здесь
20
Функция, возвращающая умный указатель
Функция возвращающая указатель на int Функция, возвращающая указатель на структуру Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|