Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 69, средняя оценка - 4.77
Tulosba
:)
Эксперт С++
4746 / 3240 / 496
Регистрация: 19.02.2013
Сообщений: 9,046
#1

Передача типа указателя на функцию - C++

27.06.2013, 17:26. Просмотров 8738. Ответов 20
Метки нет (Все метки)

Всем привет.

Недавно в теме начинающих возник вопрос, а можно ли передать тип (указатель на функцию) без использования typedef:
C++
1
2
typedef void (*func)(void);
func f = va_arg(vl,func);
Конкретно речь идет о втором аргументе макроса va_arg (из <cstdarg>).
Первое, что пришло на ум, это использование decltype. Но всё же эта фишка C++11. А есть ли решение в старом стиле?

Заранее спасибо.

Добавлено через 6 часов 36 минут
@vxg предложил такой вариант:
Кликните здесь для просмотра всего текста
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
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
 
int my_super_function(int x)
{
    return 2 * x;
}
 
void my_super_puper_function(const char *format, ...)
{
    va_list arglist;
    va_start(arglist, format);
    int (*f)(int x) = (int (*)(int x))va_arg(arglist, void *);
    printf("%i\n", f(2));
    va_end(arglist);
}
 
int main(int argc, char* argv[])
{
    my_super_puper_function("%p", my_super_function);
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2013, 17:26
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Передача типа указателя на функцию (C++):

Передача указателя на функцию-член
Всем привет ! Необходимо передать функцию-член в качестве параметра другой...

Чем _Get_pointer_type отличается от обычного получения типа указателя
При попытке более детально понять работу стандартных контейнеров в STD...

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

Ошибка Access violation при передаче указателя в функцию
выделяю память для нужд програмных и соханяю его. char *resadres =(char*)...

Передача ссылки в функцию в DLL
Здравствуйте. По этому мануалу сделал DLL...

Как написать функцию, которая бы автоматически определяла типа принимаемых параметров?
Друзья! На самом деле примеров подобных функций много, я имею ввиду...

20
Tulosba
:)
Эксперт С++
4746 / 3240 / 496
Регистрация: 19.02.2013
Сообщений: 9,046
30.06.2013, 18:23  [ТС] #21
Цитата Сообщение от Kastaneda Посмотреть сообщение
а struct нет
Со структурой из нескольких полей придется и при передаче в функцию (с ...) структуру передавать, а не просто указатель на функцию. Т.е. "дополнительная сущность" должна быть известна и за пределами my_super_puper_function, что не очень хорошо.
0
30.06.2013, 18:23
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2013, 18:23
Привет! Вот еще темы с решениями:

Написать функцию, которая напечатает битовое представление значения заданного типа – enum
Здравствуйте, помогите пожалуйста с типом данных enum,требуется написать...

Передача объекта типа TStringGrid в функцию в Embarcadero C++
Здравствуйте. Недавно начал изучать embarcadero c++ builder и столкнулся с...

Передача и возврат указателя из массива
Доброго времени суток. проблема с указателями как я догадываюсь. функция im...

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


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

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

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