![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| UDT |
|
||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 25.10.2014 Репутация: нет Всего: нет |
Товарищи, помогите с программой, пожалуйста.
Есть класс, в котором приват-функции Integrate(...) нужно передать указатель на приват-функцию Integrand(...). Передача адреса тут необходима согласно декларации gsl-function из Integrate(...), смотреть строчку 44 в полном коде. На все мои попытки присвоить адрес Integrand, типа чего-то такого
На этот момент, с момощью определения указателя вне класса
Однако, предать указатель gsl-функции не получается. Например, так не работает
Что не так? Пожалуйста, не предлагайте решения, требующие С++11 и выше. Введения static function тоже хочется избежать. Очень надеюсь на помощь, спасибо. Вот полный код
|
||||||||||
|
|||||||||||
| borisbn |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
Я в таких случаях делаю след. образом
Если в функцию Integrand() нужно передавать параметры, то их нужно сохранить в члене класса cross_section, а при вызове брать их и подставлять в Integrand( ... ). Т.е. типа такого
Это сообщение отредактировал(а) borisbn - 26.10.2014, 12:38 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
||||
|
|||||
| UDT |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 25.10.2014 Репутация: нет Всего: нет |
borisbn, спасибо за ответ. Как раз статик-функцию не хотелось вводить. Хочу чтобы наружу из класса торчала только одна функция. Мне придется делать несколько вложенных интегрирований и, на каждое вводить свою static как pablic-функцию, что-то не хочется.
Может кто еще что подскажет? |
|||
|
||||
| Ihost |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 14.9.2012 Репутация: нет Всего: нет |
Так же задача фактически сводится к тому, что вам необходимо сделать делегат к функции-члену, ссылающийся на выбранную инстанцию класса
Конкретных реализаций может быть множество, к примеру определенные варианты рассмотрены здесь и здесь Также не очень ясно, зачем вообще сделана глобальная переменная pt_to_Integrand, если можно просто просто декларировать тип
Полезную информацию можно прочесть здесь - Самые быстрые делегаты на C++ |
|||
|
||||
| UDT |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 25.10.2014 Репутация: нет Всего: нет |
Ihost, большое спасибо.
Делегаты-это как раз то, что нужно! Пока, лучшее что у меня выходило это объявить Integrand as а static-function. Пойду переделывать, спасибо еще раз. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |