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

Забиндить функцию с параметрами, чтобы она хранилась в классе и вызывалась без placeholders - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 28, средняя оценка - 4.96
castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,055
Записей в блоге: 10
Завершенные тесты: 1
30.01.2014, 22:42     Забиндить функцию с параметрами, чтобы она хранилась в классе и вызывалась без placeholders #1
Значит привет всем.
Суть в кратце: хочу забиндить функцию с параметрами (кол-во произвольно), чтобы она хранилась в классе, и чтобы я мог вызвать её без placeholders.
Для наилучшего понимания того что я хочу, ниже следует "псевдо-код" (разумеется не рабочий):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct function_holder {
    auto f;
 
    function_holder( auto f ) : f(f) {}
 
    void call() {
        f();
    }
};
 
void test( int a, int b, int c ) {
    std::cout << __PRETTY_FUNCTION__ << " : " << a << b << c << std::endl;
}
 
int main() {
    auto f = std::bind( test, 1, 2, 3 );
    function_holder fh( f );
}
Верю в то что есть варианты, но из-за отсутствия свободного времени и наличия хорошего интернета мне это не по зубам..
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2014, 22:42     Забиндить функцию с параметрами, чтобы она хранилась в классе и вызывалась без placeholders
Посмотрите здесь:

C++ Как переопределить функцию так, чтобы она не только могла принимать разные параметры, но и возвращать тоже разные?
C++ Как написать программу без оформления (формы), то есть чтобы она не создавала ни одного окна, ни cmd
Передача TMemo в функцию с параметрами по умолчанию C++ Builder
C++ Переделать функцию поиска самой длинной строки так, чтобы она правильно печатала размер произвольно длинной входной строки и воспроизводила ее
Переписать функцию sqrt, чтобы она работала с большими числами C++
Как вызвать конструктор с параметрами в конструкторе без параметров? C++
C++ Дополнить функцию, чтобы она находила наиболее встречаемое число
Создание массива через функцию с параметрами C++
Boost C++ Phoenix и его placeholders
C++ Забиндить функцию и параметром-ссылкой не используя С++11
Написать класс «массив» (В классе реализовать следующие методы: конструкторы (по умолчанию, с параметрами,) C++
Модернизируйте функцию factorial так, чтобы она не была рекурсивной C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
5553 / 3032 / 339
Регистрация: 29.11.2010
Сообщений: 8,197
31.01.2014, 04:06     Забиндить функцию с параметрами, чтобы она хранилась в классе и вызывалась без placeholders #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Оно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
struct function_holder {
    std::function<void()> f;
 
    function_holder( std::function<void()> f_ ) : f(f_) {}
 
    void call() {
        f();
    }
};
 
void test( int a, int b, int c ) {
    std::cout << __PRETTY_FUNCTION__ << " : " << a << b << c << std::endl;
}
 
int main() {
    auto f = std::bind( test, 1, 2, 3 );
    function_holder fh( f );
    fh.call();
}
castaway
Эксперт С++
4867 / 3006 / 370
Регистрация: 10.11.2010
Сообщений: 11,055
Записей в блоге: 10
Завершенные тесты: 1
31.01.2014, 09:21  [ТС]     Забиндить функцию с параметрами, чтобы она хранилась в классе и вызывалась без placeholders #3
Да, то что надо. Спасибо!
Yandex
Объявления
31.01.2014, 09:21     Забиндить функцию с параметрами, чтобы она хранилась в классе и вызывалась без placeholders
Ответ Создать тему
Опции темы

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