![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Lipetsk |
|
|||
![]() в форме ;) ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.1.2009 Где: Липецк Репутация: нет Всего: 5 |
Здравствуйте
У меня возникла такая задача на C/C++. Нужно сделать что-то вроде генератора функций. Например,
Наверняка для этого существуют какие-то стандартные подходы, но в интернете что-то ничего удовлетворительного не нашел Спасибо |
|||
|
||||
| Earnest |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Во-первых, это надо спрашивать в разделе С++
Во-вторых, можно как-то так:
Использование:
-------------------- ... |
||||
|
|||||
| Lipetsk |
|
|||
![]() в форме ;) ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.1.2009 Где: Липецк Репутация: нет Всего: 5 |
на счет раздела, может я и ошибся
но ваш вариант реализации определенно не годится, нужно именно "генерировать" функции в real-time, а не при компиляции нужно, чтобы функция f имела определенный тип, в примере это func, потому что это будет CallBack функция для API Это сообщение отредактировал(а) Lipetsk - 3.11.2011, 08:17 |
|||
|
||||
| Lipetsk |
|
|||
![]() в форме ;) ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.1.2009 Где: Липецк Репутация: нет Всего: 5 |
Если я ошибся разделом, то, пожалуйста, перенесите тему в раздел C/C++ Общие вопросы
|
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
С++ так не умеет. А что касается раздела, то это может сделать только его модератор. -------------------- ... |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
как сказала Earnest, в с++ невозможно генерировать функции в run-time. но это собственно и не надо.
одно из решений:
http://liveworkspace.org/code/3a57b623742d...f3c92ebca38b115 |
|||
|
||||
| Lipetsk |
|
|||
![]() в форме ;) ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.1.2009 Где: Липецк Репутация: нет Всего: 5 |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
обоснование, пожалуйста ;) |
|||
|
||||
| Lipetsk |
|
|||
![]() в форме ;) ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.1.2009 Где: Липецк Репутация: нет Всего: 5 |
||||
|
||||
| Леопольд |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
А чем предложенный вариант не подходит?
Это сообщение отредактировал(а) Леопольд - 3.11.2011, 11:33 -------------------- вопросов больше чем ответов |
||||
|
|||||
| Lipetsk |
|
||||
![]() в форме ;) ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.1.2009 Где: Липецк Репутация: нет Всего: 5 |
Леопольд, вы не видите разности между
и
? |
||||
|
|||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Голый указатель на функцию это из мира чистого С, в котором нет поддержки ООП. Если не нравится boost::function и не хочется привязываться к сторонней библиотеке, можно использовать шаблоны:
Это сообщение отредактировал(а) Леопольд - 3.11.2011, 11:32 -------------------- вопросов больше чем ответов |
|||
|
||||
| Lipetsk |
|
|||
![]() в форме ;) ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.1.2009 Где: Липецк Репутация: нет Всего: 5 |
А мне и не нужно ООП например, мне нужно в классе вызвать DdeInitialize и передать ему уникальную callback функцию, привязанную к экземпляру класса, а не статическую. Эту уникальную функцию в принципе можно сгенерировать используя ассемблерные вставки в код. Но не очень хочется изобретать велосипед, хотя |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
Lipetsk, а диапазон значений для функции Generator(), известен?
|
|||
|
||||
| Lipetsk |
|
|||
![]() в форме ;) ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 28.1.2009 Где: Липецк Репутация: нет Всего: 5 |
я не понял вопроса ее значения это функции много ли экземпляров функций f я собираюсь создать? пока не много но скоро мне нужно будет заняться одной задачей с COM-объектами, в которой, я планирую, будет аналогичный генератор и вызывать его я буду постоянно (а также удалять отработавшие функции) |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |