Форум программистов, компьютерный форум CyberForum.ru

Есть функция A принимающая прараметром указатель на функцию B. Как вместо последнего вставить тело B? - C++

Восстановить пароль Регистрация
 
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
17.07.2011, 22:13     Есть функция A принимающая прараметром указатель на функцию B. Как вместо последнего вставить тело B? #1
C++
1
2
3
4
5
6
7
8
9
10
11
#include<stdio.h>
#include <algorithm>
using namespace std;
 
char s[]="abcd";
 
bool IsOdd (char i) {return strchr (s, i);}
 
int main(){
 remove_if (s, s+ 4, IsOdd);
}

ТО есть вместо
C++
1
remove_if (s, s+ 4, IsOdd);
как-то хитро пишется, я не знаю как, но видел тут на форуме проскальзывало по-моему у игоря85, да и в другом месте я краем глаза цеплял, как-то хитро пишется типа
C++
1
remove_if (s, s+ 4, bool(*)()(char i){return strchr (s, i);});
...Ребята, никто не знает?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2011, 22:13     Есть функция A принимающая прараметром указатель на функцию B. Как вместо последнего вставить тело B?
Посмотрите здесь:

Как передать параметр типа "указатель на указатель" в функцию? C++
Функция, возвращающая указатель на функцию C++
результатом вычисления фрагмента не является функция, принимающая 1 аргументов C++
C++ error C2064: результатом вычисления фрагмента не является функция, принимающая 0 аргументов
Функция, принимающая двумерный массив C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
17.07.2011, 22:26     Есть функция A принимающая прараметром указатель на функцию B. Как вместо последнего вставить тело B? #2
kravam, по-моему ты говоришь про лямбда-выражения из ещё до-конца не принятого стандарта C++0x. Так?

Добавлено через 7 минут
C++
1
remove_if (s, s+ 4, [](char i) -> bool { return strchr (s, i); } );
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
17.07.2011, 23:11  [ТС]     Есть функция A принимающая прараметром указатель на функцию B. Как вместо последнего вставить тело B? #3
Нет, это ведь у них только в перспективе, как я понял.

Не по теме:

А чё, компилятор придётся менять?

grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
17.07.2011, 23:13     Есть функция A принимающая прараметром указатель на функцию B. Как вместо последнего вставить тело B? #4
Ну как-минимум GCC современный это уже поддерживает (с явным указанием стандарта). Возможно VS2010 тоже, но этого у меня нет.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
17.07.2011, 23:14  [ТС]     Есть функция A принимающая прараметром указатель на функцию B. Как вместо последнего вставить тело B? #5
У меня g++
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
17.07.2011, 23:16     Есть функция A принимающая прараметром указатель на функцию B. Как вместо последнего вставить тело B? #6
Ну тогда ключ -std=c++0x должен помочь. Однако если заботиться о переносимости, то это не лучший вариант.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
17.07.2011, 23:24  [ТС]     Есть функция A принимающая прараметром указатель на функцию B. Как вместо последнего вставить тело B? #7
Незнаком мой компилятор с таким опциями
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
17.07.2011, 23:24     Есть функция A принимающая прараметром указатель на функцию B. Как вместо последнего вставить тело B? #8
Версия какая?
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
17.07.2011, 23:28  [ТС]     Есть функция A принимающая прараметром указатель на функцию B. Как вместо последнего вставить тело B? #9
А как узнать? Вообще IDE DEV C++ 4.9.9.2, по-хорошему надо компилятор новый скачать и закинуть вместо старого, но новый неопробованный вот в чём всё дело.
nameless
Эксперт C++
 Аватар для nameless
289 / 288 / 14
Регистрация: 16.06.2009
Сообщений: 486
17.07.2011, 23:31     Есть функция A принимающая прараметром указатель на функцию B. Как вместо последнего вставить тело B? #10
Цитата Сообщение от kravam Посмотреть сообщение
А как узнать?
Вообще так:
Код
g++ --version
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
17.07.2011, 23:32     Есть функция A принимающая прараметром указатель на функцию B. Как вместо последнего вставить тело B? #11
Я узнаю так:
g++ --version
Но тот наверняка не поддерживает. Лямбды появились, по-моему, только в 4.5
Менять ли компилятор — если хочется использовать новые плюшки, то разумеется. Но пока стандарта окончательно нет, то скорее для ознакомления с плюшками
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
17.07.2011, 23:42  [ТС]     Есть функция A принимающая прараметром указатель на функцию B. Как вместо последнего вставить тело B? #12
g++ (GCC) 3.4.2 (mingw-special)
Copyright (C) 2004 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Как-нибудь соберусь с духом поменяю, IDE устраивает
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.07.2011, 12:13     Есть функция A принимающая прараметром указатель на функцию B. Как вместо последнего вставить тело B?
Еще ссылки по теме:

C++ в 8 и 10 строке результатом вычисления фрагмента не является функция принимающая 1 аргументов
C++ разница между указатель на функцию и функция возврата указателя?
C++ Виртуальная функция, принимающая объекты поочередно

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
silent_1991
18.07.2011, 12:13     Есть функция A принимающая прараметром указатель на функцию B. Как вместо последнего вставить тело B?
  #13

Не по теме:

Для справки - cl в 2010 студии тоже их поддерживает))

Yandex
Объявления
18.07.2011, 12:13     Есть функция A принимающая прараметром указатель на функцию B. Как вместо последнего вставить тело B?
Ответ Создать тему
Опции темы

Текущее время: 18:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru