![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Mormishka |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
У меня есть функциb
еще есть другая функция
как мне передать в функцию f2 функцию f1, при этом y,z фиксировано ? |
||||
|
|||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Mormishka, никак. Подобное в С++ решается шаблонами и функторами
|
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
boost::bind()
Добавлено через 5 минут и 43 секунды тут еще кол-во аргументов не совпадает. или так задумано? Добавлено через 8 минут и 9 секунд стандартное решение при помощи байндеров:
http://liveworkspace.org/code/94182ffea77b...f087f2e80317d3d |
|||
|
||||
null56 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 721 Регистрация: 19.3.2008 Репутация: нет Всего: 12 |
ну если они фиксированы, может как - то так?
Это сообщение отредактировал(а) null56 - 21.4.2011, 20:35 |
|||
|
||||
Mormishka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
boostcoder
Да, не совпадает. |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
то же, но без шаблона :
Это сообщение отредактировал(а) bsa - 22.4.2011, 13:54 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
mes, я и это тоже имел в виду под "шаблоны". На C, а так же если функция f2 принимает только указатель на функцию, то решения нет.
|
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
bsa, я привел код не для примера, как решить задачу без шаблонов,
а чтоб тс было легче разобраться с биндом ![]() |
|||
|
||||
Mormishka |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
mes,
По-моему вы не совсем меня поняли.
Пусть y и z у меня фиксированы. Мне надо передать в f2 функцию от x.
Все правильно? Что такое "_1" ? Это сообщение отредактировал(а) Mormishka - 22.4.2011, 19:33 |
||||
|
|||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Mormishka, это все доступно только в будущем стандарте С++. Если у тебя f2 определена так, как ты указал, то работать не будет.
Я уже сказал, для твоей задачи решения нет, если не прибегать к шаблонным функциям и пр. Если ты менять f2 не собираешься (например, это что-то в сторонней библиотеке), то забудь об этом. |
|||
|
||||
Mormishka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
bsa,
У меня Visual Assist. Я набираю std:: он мне предлагает bind. У меня что будущий стандарт стоит ![]() А вариант с бустом boostcoder, -а ,будет работать ? Проверил, у меня все работает. У меня будущий стандарт! ![]() Это сообщение отредактировал(а) Mormishka - 22.4.2011, 20:08 |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
что именно? std::bind() ? поясняйте. а то ощущение такое, что с++ вообще только в будущем стандарте будет работать. и в добавок: стандарт утвердили. ждем печатного издания. обещают к осени. будет работать всегда и везде где работает boost ;) Добавлено через 8 минут и 31 секунду студия 2010? ;) |
|||
|
||||
Mormishka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
boostcoder,
студия 2010 А как объявить шаблон ?
Это сообщение отредактировал(а) Mormishka - 22.4.2011, 20:55 |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
откуда взялось удивление фактом присутствия std::bind() ? ;) обязательно дважды спрашивать/отвечать? мой первый пост смотри ;) |
|||
|
||||
Mormishka |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
boostcoder,
Подключаю
Выдает кучу ошибок. Причем когда включаю в пустой проект работает. С чем он может конфликтовать?
Это сообщение отредактировал(а) Mormishka - 23.4.2011, 06:45 |
||||
|
|||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
Mormishka, а ты создаешь с++ проект? или Си? или в студии невозможно создать Си проект.
создай с++ проект, и вставь в него код из моего первого поста. |
|||
|
||||
Mormishka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
boostcoder,
Твой пример работает. У меня просто программа сложнее, там много параметров, еще указатель на функцию передается.
Это сообщение отредактировал(а) Mormishka - 23.4.2011, 14:06 |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
"std::placeholders::" - убери везде.
Добавлено через 2 минуты и 22 секунды "std::function" - замени на "boost::function", и подключи "<boost/function.hpp>" Добавлено через 2 минуты и 58 секунд "#include <functional>" - это удали. |
|||
|
||||
Mormishka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
Также куча ошибок.
|
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
очень жестокие у тебя функции
![]() разбей их на более мелкие. а то черт ногу сломит в таком кол-ве аргументов. Добавлено через 5 минут и 31 секунду еще бы понять что ты хочешь получить... Добавлено через 8 минут и 42 секунды
тут ты создаешь функциональный объект и передаешь его в solve_one_equat(). но что означает это?: &F_potok,&F_line объясни как твой код должен работать? |
|||
|
||||
Mormishka |
|
||||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
Функция должна принимать указатель на функцию и одну переменную
Простая функция
Функция которая должна принимать указатель на функцию F_line и несколько своих аргументов
Главная функция. Она вызывает функцию solve_one_equat, в качетсве аргумета которой мы должны передать указатель на функцию F_line зависящую только от одной переменной mr, все остальные переменные фиксированы.
Это сообщение отредактировал(а) Mormishka - 23.4.2011, 14:42 |
||||||||
|
|||||||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
если я тебя правильно понял, то в байнде, у тебя должен создаваться еще один функциональный объект на месте "&F_line". а его не.
Это сообщение отредактировал(а) boostcoder - 23.4.2011, 14:45 |
|||
|
||||
Mormishka |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
Наверное да, &F_line это аргумент функции F_potok.
В общем нужно получить функцию Из функции
|
||||
|
|||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
с чем проблема? байнд ты использовать научился, вроде как. Добавлено через 1 минуту и 22 секунды тут есть перевод использования байнда, проиллюстрированный в картинках ![]() |
|||
|
||||
Mormishka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
boostcoder,
Я так понял проблема в том что с указателями функций он не работает. |
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
ошибаешься. ты неправильно создаешь функциональный объект. твой функциональный объект, аргументом должен брать другой функциональный объект. я об этом уже писал. и ты вроде как на тот момент понял. |
|||
|
||||
Mormishka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
boostcoder,
А как сделать на функцию-член с учетом boost::function ? |
|||
|
||||
mes |
|
|||
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 79 Всего: 250 |
|
|||
|
||||
Mormishka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
Почему тогда не этот код не работает?
|
|||
|
||||
boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
ты принципиально не хочешь читать доку? |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
А если бы со мной ты согласился, что решения нет, то больше вопросов бы не было ![]() Рано ему еще bind. РАНО! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |