|
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
|
|
Можно ли в C++ определить функцию, которая возвращает указатель на функцию с той же сигнатурой?13.01.2018, 17:21. Показов 2224. Ответов 20
Метки нет (Все метки)
Вопрос такой, а можно ли в C++ определить функцию, которая возвращает указатель на эту же функцию, то есть на функцию с такой же самой сигнатурой?
0
|
|
| 13.01.2018, 17:21 | |
|
Ответы с готовыми решениями:
20
Написать функцию, которая возвращает указатель на первое вхождение подстроки string2 в строке string1 Разработать и испытать функцию, которая переворачивает строку и возвращает указатель на перевёрнутую строку |
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 13.01.2018, 18:26 | |
|
А возвращать она что должна? Указатель на саму себя или nullptr
?
0
|
|
|
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
|
|
| 13.01.2018, 18:31 [ТС] | |
|
Это и есть суть вопроса, а точнее его часть.
А возвращать она должна указатель на функцию той же самой сигнатуры, что и она сама.
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||
| 13.01.2018, 18:32 | |||||||
|
http://rextester.com/WMXS26782
2
|
|||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||||||||||||||||
| 13.01.2018, 19:33 | ||||||||||||||||
|
hoggy, прикольно. Потому что для обычных указателей даже с конечной глубиной вызовов всё выглядело бы печально:
Другой вопрос - зачем это нужно, если переключать указатели на одном уровне вложенности не на что (т.к. указатель на свою собственную сигнатуру всего один). Ведь это полностью аналогично обычной рекурсии, реализуемой без всяких указателей Добавлено через 29 минут Можно ещё вот так:
Или так (то же самое, только звёздочки внутрь типа упрятаны):
0
|
||||||||||||||||
|
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
|
||||||
| 13.01.2018, 19:38 [ТС] | ||||||
|
Ну это все слишком сложно, нам бы что-нибудь попроще, вот так разве нельзя?
0
|
||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 13.01.2018, 19:58 | |
|
Просто Саша, кастование из (void *) к указателю на функцию запрещено.
Добавлено через 3 минуты Нужно кастовать между указателями на функции с разными типами и аргументами. В данном случае в качестве промежуточного используется "функция, которая возвращает указатель на функцию, возвращающую указатель"
0
|
|
|
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
|
|||||||
| 15.01.2018, 18:52 [ТС] | |||||||
0
|
|||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||
| 15.01.2018, 19:26 | |||||||
|
Добавлено через 1 минуту Тогда уж
0
|
|||||||
|
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
|
|||
| 15.01.2018, 19:34 [ТС] | |||
|
Добавлено через 7 минут Интересно другое, можно ли вообще обойтись без typedef
0
|
|||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||
| 15.01.2018, 19:47 | |||||||
|
Добавлено через 5 минут А вот в gcc последней версии (v7.1.1) всё равно будет ошибка
0
|
|||||||
|
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
|
||
| 15.01.2018, 20:11 [ТС] | ||
|
Добавлено через 15 минут А вообще вы знаете, ошибся я. Не знаю как проходило, но вот теперь вижу, что не компилируется.
0
|
||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||||||
| 15.01.2018, 20:31 | ||||||
1
|
||||||
|
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
|
|||||||
| 15.01.2018, 20:35 [ТС] | |||||||
|
Главное, что в функции main можно теперь писать вот такие конструктивы
0
|
|||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||||||
| 15.01.2018, 20:44 | ||||||
|
Думаю, оптимально будет так:
0
|
||||||
|
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
|
|
| 15.01.2018, 20:45 [ТС] | |
|
Вообще, ведь если так подумать, то пока не объявлена функция, говорить об указателе на нее бессмысленно, но сама функция для своего объявления требует уже готового типа этого указателя. Получается классическая зациклинность.
Поэтому, считаю, что на данный момент сделать такое ни в C++, ни где-либо ещё в чистом виде абсолютно нереально.
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 15.01.2018, 20:47 | |
|
А то что нельзя преобразовывать указатель на функцию из void * - моя ошибка...
0
|
|
|
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
|
|
| 15.01.2018, 20:47 [ТС] | |
|
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 15.01.2018, 20:49 | ||
|
0
|
||
|
-1 / 25 / 4
Регистрация: 27.11.2017
Сообщений: 375
|
||
| 15.01.2018, 20:52 [ТС] | ||
|
Все было бы ништяк, если бы this работал не только для классов, но и для отдельных функций.
Добавлено через 2 минуты
0
|
||
| 15.01.2018, 20:52 | |
|
Помогаю со студенческими работами здесь
20
Определить функцию, которая возвращает расстояние между двумя точками на плоскости Напишите функцию сортировки, похожую на функцию которая использовалась для сортировки массивов, с той разницей, что ее а
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|