Труд вопреки насмешкам
296 / 163 / 39
Регистрация: 13.07.2017
Сообщений: 2,754
Записей в блоге: 4
1

Указатели на функции

28.10.2018, 12:58. Показов 386. Ответов 3
Метки нет (Все метки)

Допустим, я написал такой указатель на функцию:
C++
1
template<typename... T> int (*pointer)(T... parameters);
Как добавлять к пакету T по одному параметру, чтобы при каждом добавлении предыдущие параметры полностью не перечислять, и чтобы в конце можно было подставить в этот указатель функцию со всеми добавленными типами параметров?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.10.2018, 12:58
Ответы с готовыми решениями:

Указатели на функции. Указатели на функции как формальные параметры у функциях высшего уровня
Найти наименьшее значение для функций используя функции и указатели на функции ...

Указатели на массивы. Указатели и функции
Вот задача: Даны два массива : А и B. Необходимо создать третий массив, в котором нужно...

Указатели и массивы. Указатели и функции
Никак не разберусь с указателями на функцию. Пишу в Visual Studio. Надо написать функцию...

Объявить массив из N указателей на функции, возвращающих указатели на функции, возвращающие указатель на char
Задание: Объявить массив из N указателей на функции, возвращающих указатели на функции,...

3
765 / 366 / 75
Регистрация: 10.06.2014
Сообщений: 2,408
28.10.2018, 13:50 2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
template<typename... T> 
using pointer = int (*)(T... parameters);
 
template<typename... T>
using other_pointer =  pointer<int, T...>;
 
int f(int, double)
{
    std::cout << "int f(int, double)\n";
    return 0;
}
 
int main()
{
    other_pointer<double> p = f;
    p(1,1.0);
}
0
Труд вопреки насмешкам
296 / 163 / 39
Регистрация: 13.07.2017
Сообщений: 2,754
Записей в блоге: 4
28.10.2018, 15:37  [ТС] 3
А как сделать, чтобы было возможным что-то похожее на такое:
C++
1
2
3
4
5
6
7
8
9
int f(int a1, double a2, std::string a3, ...) {}
int main() {
    pointer<int> p;
    add_parameter<double>(p);
    add_parameter<std::string>(p);
    ...
    p = f;
    int a = p(5, 3.14159, "abc", ...);
}
Как написать функцию add_parameter()?
0
зомбяк
1562 / 1211 / 344
Регистрация: 14.05.2017
Сообщений: 3,925
28.10.2018, 15:46 4
Etyuhibosecyu, динамически добавлять разные наборы параметров в шаблон невозможно. Потому что шаблон (и функции, и класса) предполагает полную параметризацию на момент компиляции кода.

С другой стороны - зачем это всё, когда её с С есть функции с переменным числом аргументов? https://en.cppreference.com/w/... _arguments
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2018, 15:46
Помогаю со студенческими работами здесь

Используя указатели на функцию вычислить значение функции в точке х в соответствии с выбором функции
Используя указатели на функцию вычислить значение функции в точке х в соответствии с выбором...

Используя указатели на функцию вычислить значение функции в точке х в соответствии с выбором функции
Используя указатели на функцию вычислить значение функции в точке х в соответствии с выбором...

Используя указатели на функцию вычислить значение функции в точке X в соответствии с выбором функции пользователем
Решил выложить свои лабораторные работы 1-10 за первый курс, первого семестра...

Распечатать таблицы значений функций cox (x) и на отрезке [a; b] с шагом h, развив функции в ряд Тейлора и используя указатели на функции
Распечатать таблицы значений функций cox (x) и на отрезке с шагом h, развив функции в ряд Тейлора...

Указатели и указатели на указатели, а также типы данных
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно....

Шаблонные функции и указатели на функции
Помогите доделать и исправить... Задание: 1. Создать структуру Прямоугольник, с полями Высота и...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru