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

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

Войти
Регистрация
Восстановить пароль
 
jr_
13 / 13 / 3
Регистрация: 14.06.2016
Сообщений: 117
Завершенные тесты: 3
#1

Typedef thiscall метода с переменным числом аргументов - C++

02.09.2016, 07:08. Просмотров 115. Ответов 0
Метки нет (Все метки)

Добрый день.
Хочу что то типа такого
C++
1
2
3
4
5
6
typedef void *(__thiscall *tThisCall)(void *, ...);
tThisCall method;
 
//...
 
method(object, arg1, arg2);
Естественно, такое можно только для cdecl.
Может быть можно как то используя шаблоны?
Пока додумался только до реализации через метод переходник, но такая реализация мне не нравится т.к. это лишняя трата процессорного времени.
C++
1
2
3
4
5
6
7
8
9
10
template <typename R = void, typename ... T>
static R Invoke(void *method, void *object, const T ... args) {
    R(__thiscall *m)(void *, const T ...);
    (void *&)m = method;
    return m(object, args ...);
}
 
//..
 
Invoke(method, object, arg1, arg2);
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.09.2016, 07:08     Typedef thiscall метода с переменным числом аргументов
Посмотрите здесь:

Функции с переменным числом аргументов C++
Функция с переменным количеством аргументов вызывает out of memory C++
Шаблоны с переменным числом аргументов C++
C++ Шаблон с переменным числом аргументов, и возвращаемое значение функции
C++ Инициализация std::tuple переменным числом аргументов
C++ Как изменить значение переменной, переданной в списке с переменным числом аргументов
C++ Функция с переменным кол-вом аргументов char vs int
C++ GCC и функции с переменным числом аргументов
C++ Функция с переменным числом аргументов (через шаблоны)
C++ шаблон функции с переменным количеством аргументов
Реализация шаблонного метода с переменным числом параметров C++
Шаблонная функция с переменным числом аргументов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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