![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| fear |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 16.4.2006 Репутация: 1 Всего: 1 |
Возможно ли объявить указатель на функцию, результатом выполнения которой являлся бы указатель на аналогичную функцию?
Например, указатель на функию, результатом выполнения которой является значение типа int:
Нужно что то типа:
|
||||
|
|||||
| UnrealMan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 722 Регистрация: 30.3.2006 Репутация: 27 Всего: 32 |
Невозможно.
|
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
fear, ну это точно также как объект содержащий самого себя. Никогда не смотрел в два стоящих друг напротив друга зеркала? Ситуация аналогичная.
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| fear |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 16.4.2006 Репутация: 1 Всего: 1 |
Всё таки возможно
Это сообщение отредактировал(а) fear - 20.9.2007, 15:03 |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Если я правильно разобрался в этих словесных хитросплетениях(хотя не уверен в этом до конца), то тебе нужен указатель на ф-цию, возвращающую указатель на ф-цию, возвращающую int. Если это так, то вот:
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| fear |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 16.4.2006 Репутация: 1 Всего: 1 |
не правильно Вопрос был следующий:
Добавлено @ 07:00
А где в примере одно место? И что такое GC? Это сообщение отредактировал(а) fear - 20.9.2007, 07:02 |
||||||
|
|||||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 58 Всего: 93 |
Везде Garbage Collection. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| Dov |
|
||||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Ok.
Стало быть, у тебя есть ф-ция, возвращающая int и, плюс к этому, указатель на неё. Я правильно понял? Тогда начнём сначала.
Что из этого тебе нужно? -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
||||
|
|||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Имхо, в приведенном Dov коде есть ошибка. int (*xxx)() - это указатель по имени xxx на функцию возвращающую int, а не функция, возвращающая указатель. Лучше писать так:
Это сообщение отредактировал(а) bsa - 20.9.2007, 10:36 |
||||
|
|||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
Никакой ошибки в моём коде нет. Добавлено через 4 минуты и 13 секунд а где у меня написано, что это функция? bsa, смотри внимательнее. -------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Dov, согласен, я был не прав.
|
|||
|
||||
| fear |
|
||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 16.4.2006 Репутация: 1 Всего: 1 |
Dov, ты взрываешь мой мозг.
Меня интерисовало, можно ли объявить указатель на функцию, результатом выполнения которой являлся бы указатель на аналогичную функцию? Т.е. функция возвращающая себе аналогичную фунцию. Для большего понимания вопроса был приведён пример объявления указателя на функцию, возвращающую int.
и пример желаемого результата
Надеюсь, я смог объяснить что требовалось. Решение содержит 4й пост. Если имеются мысли альтернативного решения, будет интересно взлянуть. Добавлено через 5 минут и 23 секунды
archimed7592, Подробней можешь ответить? |
||||||||||
|
|||||||||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
fear, лучше не заморачивайся и сделай возврат const void*, а при вызове делай преобразование типов. Как вариант, можно сделать через классы:
|
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
Можно написать функтор возвращающий аналогичный функтор.
Этот идиотский пример тому подтверждение:
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |