21 / 55 / 9
Регистрация: 29.09.2011
Сообщений: 610

Шаблон указателя на функцию

13.10.2014, 13:43. Показов 3351. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Надо создать шаблон, который бы генерировал функцию, вызывающую другую функцию, которую я передал ей в шаблоне.
Что - то похожее на это, только typename T должен быть указателем на функцию.
C++
1
2
3
4
    template<typename T>
    static void Map::lookAroundII(int** sheet, int a, int b){
        T(sheet[a][b]);
    }
Передавать указатель как аргумент нельзя.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.10.2014, 13:43
Ответы с готовыми решениями:

Шаблон указателя на функцию и шаблоны функций
Подскажите пожалуйста, в чём проблема? Не смог разобраться. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Как сделать функцию от указателя на класс и указателя на метод?
Не получается сделать функцию, параметрами которой являются указатель на класс и на метод. Обращаться к классу нужно именно по указателю,...

Шаблон RAII замены указателя на функцию
шаблон raii замены указателя на фукнцию допустим имеется набор указателей на функции разных типов и существует потребность временно,...

7
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2219 / 1421 / 415
Регистрация: 16.05.2013
Сообщений: 3,616
Записей в блоге: 6
13.10.2014, 13:47
Цитата Сообщение от _20_ Посмотреть сообщение
Передавать указатель как аргумент нельзя
Как тогда шаблон должен узнать какую функцию вызывать?
И кстати в библиотеке имеется шаблон std::function.
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.10.2014, 13:48
Цитата Сообщение от _20_ Посмотреть сообщение
Что - то похожее на это, только typename T должен быть указателем на функцию.
T должен быть аргументом lookAroundII

Добавлено через 40 секунд
C++
1
2
3
4
template<typename T>
static void Map::lookAroundII(int** sheet, int a, int b, T f){
    f(sheet[a][b]);
}
0
Эксперт по математике/физикеЭксперт С++
 Аватар для Ilot
2219 / 1421 / 415
Регистрация: 16.05.2013
Сообщений: 3,616
Записей в блоге: 6
13.10.2014, 13:50
Jupiter,
Цитата Сообщение от _20_ Посмотреть сообщение
Передавать указатель как аргумент нельзя.
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.10.2014, 13:51
Цитата Сообщение от _20_ Посмотреть сообщение
Передавать указатель как аргумент нельзя
обоснуй?
0
21 / 55 / 9
Регистрация: 29.09.2011
Сообщений: 610
13.10.2014, 14:11  [ТС]
обоснуй?
Простого "нехочу" достаточно?

Как тогда шаблон должен узнать какую функцию вызывать?
Как - то так:
void (*func)(int) = abc;
lookAroundII<func>(sheet, a, b);
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
13.10.2014, 14:12
Цитата Сообщение от _20_ Посмотреть сообщение
Простого нехочу достаточно?
хотеть не вредно. нельзя так сделать и все.
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
13.10.2014, 15:12
Лучший ответ Сообщение было отмечено _20_ как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/////////////////////////////////////////////////////////////////////////////////////////
//Надо создать шаблон, который бы генерировал функцию, вызывающую другую функцию, 
//которую я передал ей в шаблоне.
//Что-то похожее на это, только typename T должен быть указателем на функцию.
//    template<typename T>
//    static void Map::lookAroundII(int** sheet, int a, int b)
//    {
//        T(sheet[a][b]);
//    }
//
//Передавать указатель как аргумент нельзя.
/////////////////////////////////////////////////////////////////////////////////////////
#include <iostream>
/////////////////////////////////////////////////////////////////////////////////////////
template< void (*TT_func_ptr)( int, int ) >
struct  T_executor
{
    void    operator()
        (
            int     a,
            int     b
        )
    {
        TT_func_ptr( a, b );
    }
};
/////////////////////////////////////////////////////////////////////////////////////////
void    plus
    (
        int     a,
        int     b
    )
{
    std::cout   <<  "plus"
                <<  std::endl;
}
/////////////////////////////////////////////////////////////////////////////////////////
void    minus
    (
        int     a,
        int     b
    )
{
    std::cout   <<  "minus"
                <<  std::endl;
}
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    T_executor< &plus >     exs_1;
    exs_1( 1, 2 );
    T_executor< &minus >    exs_2;
    exs_2( 1, 2 );
    system("pause");
}
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.10.2014, 15:12
Помогаю со студенческими работами здесь

Зачем передавать в функцию X указатель на callback функцию, если последняя ВНЕШНЯЯ и вызовется БЕЗО ВСЯКОГО УКАЗАТЕЛЯ?
Собсно. То есть ребята, вот пример отсюда: http://www.cplusplus.com/reference/algorithm/count_if/ // count_if example #include...

Передача указателя на шаблонную функцию в другую функцию
Пишу тест для нескольких улучшений квиксорта с измерением времени. Функция benchmark принимает итераторы для диапазона элементов, указатель...

Передача указателя на функцию
Доброго дня Форумчане. Хотелось бы узнать как вызывать функцию получив на нее указатель? пример class C1 { public: void...

Использование указателя на функцию
нужна помощь с переделкой кода. имеющийся код который вычисляет максимально из 2 чисел, нужно переделать используя функции на указатель....

Передача указателя на функцию
Друзья подскажите пожалуйста где ошибка. Я хочу передать указатель на функцию из экземпляра класса cThreadPool в главный класс. Возникает...


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

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

Новые блоги и статьи
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru