Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
QGuest
8 / 8 / 0
Регистрация: 08.01.2013
Сообщений: 85
#1

Передача перегруженной функции как аргумента - C++

10.06.2014, 21:27. Просмотров 212. Ответов 1
Метки нет (Все метки)

Есть 3 метода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
static int readInteger() {
    double temp = readDouble();
    int result = temp;
    if (result != temp) throw new invalid_argument("Input value isn`t correct.");
    else return result;
}
 
static int readInteger(int defaultValue) {
    try { return readInteger(); }
    catch (invalid_argument* ex) { delete ex; return defaultValue; }
}
 
template <typename T>
static T readValueLoop(function<T(void)> func, string text = "", string error = " = incorrect.") {
    T result;
    while (true) {
        try { result = func(); break; }
        catch (invalid_argument* ex) { delete ex; }
    }
    return result;
}
Как в метод readValueLoop передать метод readInteger(void)?
C++
1
int index = System::getValueLoop<int>(System::readInteger);
Ибо висуал ругается, типо не знает какую именно функцию надо передать... Но вроде ясно написано: function<T(void)> - именно с void.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2014, 21:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача перегруженной функции как аргумента (C++):

Функция рассчета определенного интеграла. (Передача функции как аргумента) - C++
Есть функция пределенная как: float integrall(float (*argFunc)(float x) , float argTmin, float argTmax, float argStep=1) Если ей...

Передача массива в качестве аргумента функции - C++
В общем нужно передать массив в качестве аргумента без указания его размера, чтобы в дальнейшем присвоить все его содержимое другому...

Передача функции в качестве аргумента массив - C++
Помогите пожалуйста! есть некая рекурсивная функция N которая принимает 2 целочисленные переменные и массив; void N(int, int, &quot;?&quot;);...

Передача двумерного массива в качестве аргумента функции - C++
Подскажите пожалуйста что не так? (Подчёркивает вот тут вот index(A); аргумент функции). Объясните пожалуйста в чём моя ошибка. ...

Передача объекта в качестве аргумента функции (метода) - C++
На &quot;Интуите&quot; имеем код: class Complex { public: int real; // вещественная часть int imaginary; // мнимая часть ...

Передача метода класса в качестве аргумента внешней функции - C++
Столкнулся со следующей проблемой. Пусть у меня есть некая внешняя функция, которая принимает в качестве аргумента указатель на функцию...

1
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
10.06.2014, 22:21 #2
C++
1
2
std::function<int(void)> f = static_cast<int(*)(void)>( readInteger );
readValueLoop( f /* ... */ );
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2014, 22:21
Привет! Вот еще темы с ответами:

Возможна ли передача двумерного массива в качестве аргумента функции по ссылке - C++
Нужно передать двумерный массив в функцию. Понятно, что можно сделать так: void point_to_matrix(double**A,int n_row,int n_column){ ...

Ввод данных в функции конструктора и использование их в перегруженной функции - C++
Вот собственно код, как его исправить, что бы не было ошибки. Пишет что переменные не объявлены. Это вполне естественно. Но как сделать...

Передача функции-члена в качестве аргумента (не через указатель) - C++
Привет! Озадачился такой проблемой - вот пример того, что нужно typedef void(class1::*method)(); void func (method) {}; func...

Создание перегруженной функции - C++
Создайте перегруженные функции для вычисления абсолютной величины числа. Одна функция работает с числами типа int, другая с типом double....


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.