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

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

Войти
Регистрация
Восстановить пароль
 
 
h3mbr0
205 / 48 / 8
Регистрация: 12.03.2012
Сообщений: 276
#1

Объявить аргументы по шаблону - C++

28.09.2013, 20:53. Просмотров 1050. Ответов 30
Метки нет (Все метки)

Доброго времени суток
Задача весьма расплывчатая: нужно объявить функцию, или указатель на нее шаблоном

Цель - вызвать эту функцию с проверкой аргументов:

C++
1
2
3
4
5
6
7
8
9
10
11
12
int f1(int a)
{
 return -a;
}
//...
template<typename retType, ARGS>
retType Func(PVOID Fn, ARGS)
{
  return  Fn(ARGS);
}
//..
Func(f1, 42);
(пример некорректный)
Мне нужен рабочий вариант или аналог
Наличие подсказки аргументов обязательно, т.е. макросы или inline-asm не подходит

Собственно задумка в том, чтобы данная функция находилась в классе, а при его инициализации передавалась ссылка на функцию, чтобы в дальнейшем была возможность вызвать функцию из класса с проверкой аргументов переданной функции
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2013, 20:53     Объявить аргументы по шаблону
Посмотрите здесь:

Поиск по шаблону * и? - C++
Здраствуите можете помочь с малеьким таки заданием ,я пытался еа куралесить ну не получилось. я вложил исходник в текстовом фаиле

Поиск по шаблону - C++
При реализации поиска по шаблону столкнулся со следующей проблемой: Шаблон: *abc Тест1: abc Тест2: fabc Тест3: ssabk_abc Первые...

Вопрос по шаблону - C++
Доброго времени суток! Есть шаблон функции которая находит минимальный эллемент массива и возвращает его. template &lt;typename Any,...

Аргументы и using - C++
Я прочитал мног статей про аргументы в функциях (вообще меня тупо интересовало что пишется в скобках после main) , Но ничего не понял...

Проверка ввода по шаблону - C++
Всем привет! Есть заданный шаблон, по которому пользователь должен вводить телефонный номер: (ХХХ) ХХХ-ХХ-ХХ; Как умнее и лучше всего...

Аргументы функции - C++
Вопрос на счет аргументов функции в С++. есть такая функция: void Teleport(Player* pPlayer, float array) { int i = 0; ...

Аргументы по умолчанию C++ - C++
Здравствуйте! Подскажите пожалуйста как можно присвоить строку &quot;Hello&quot; переменной *char в прототипе функции, чтобы *a была по умолчанию...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
h3mbr0
205 / 48 / 8
Регистрация: 12.03.2012
Сообщений: 276
28.09.2013, 22:46  [ТС]     Объявить аргументы по шаблону #21
Цитата Сообщение от castaway Посмотреть сообщение
Такой синтаксис параметров в GCC, подозреваю что в MSVC он другой.
Нагуглил следующее:
AFAIR it's enabled by default.

It isn't, however, complete. For example you use initialiser lists which it lacks support for at the moment.

See the table here msdn.microsoft.com/en-gb/library/vstudio/hh567368.aspx for the status of C++11 features in both VS2010 and VS2012.
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
28.09.2013, 22:47     Объявить аргументы по шаблону #22
Цитата Сообщение от castaway Посмотреть сообщение
Такой синтаксис параметров в GCC, подозреваю что в MSVC он другой.
подозреваю, что та студия не поддерживает variadic template'ы
castaway
Эксперт С++
4880 / 3016 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
28.09.2013, 22:48     Объявить аргументы по шаблону #23
Насколько мне известно, в Visual Studio 2012 реализованы не все возможности стандарта С++11, хотя могу и ошибаться..
Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
28.09.2013, 22:49     Объявить аргументы по шаблону #24
h3mbr0, еще так можно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int sum(int a, int b)
{
    return a + b;
}
 
template <class Function>
class Foo
{
public:
    Foo(Function f)
        : func(f) {}
 
    Function func;
};
 
int main()
{
    std::cout << Foo<int(*)(int, int)>(sum).func(42, 42);
    return 0;
}
h3mbr0
205 / 48 / 8
Регистрация: 12.03.2012
Сообщений: 276
28.09.2013, 22:49  [ТС]     Объявить аргументы по шаблону #25
Цитата Сообщение от castaway Посмотреть сообщение
Насколько мне известно, в Visual Studio 2012 реализованы не все возможности стандарта С++11, хотя могу и ошибаться..
Я ведь об этом и писал...
И действительно
Variadic templates v0.9, v1.0 - No - No

Жалко(

Всем спасибо за помощь, придется обходится макросами с костылями)
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
28.09.2013, 22:50     Объявить аргументы по шаблону #26
Olivеr, в первом посте речь шла о проверке аргументов же
h3mbr0
205 / 48 / 8
Регистрация: 12.03.2012
Сообщений: 276
28.09.2013, 22:50  [ТС]     Объявить аргументы по шаблону #27
Цитата Сообщение от Olivеr Посмотреть сообщение
h3mbr0, еще так можно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int sum(int a, int b)
{
    return a + b;
}
 
template <class Function>
class Foo
{
public:
    Foo(Function f)
        : func(f) {}
 
    Function func;
};
 
int main()
{
    std::cout << Foo<int(*)(int, int)>(sum).func(42, 42);
    return 0;
}
Блин, а раньше нельзя было об этом?)
У меня почему-то возникала ошибка преобразования int(*)(int, int) в int(int,int)
Видимо, не так вызывал

Спасибо еще раз, буду пробовать
Olivеr
411 / 407 / 13
Регистрация: 06.10.2011
Сообщений: 830
28.09.2013, 22:52     Объявить аргументы по шаблону #28
Цитата Сообщение от alex_x_x Посмотреть сообщение
Olivеr, в первом посте речь шла о проверке аргументов же
ТС еще вот это попросил
Объявить аргументы по шаблону
alex_x_x
бжни
2445 / 1650 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
28.09.2013, 22:52     Объявить аргументы по шаблону #29
h3mbr0, чет я не пойму - как это связано с
Цитата Сообщение от h3mbr0 Посмотреть сообщение
чтобы в дальнейшем была возможность вызвать функцию из класса с проверкой аргументов переданной функции
Добавлено через 16 секунд
Olivеr, а, ок
Jupiter
Каратель
Эксперт С++
6551 / 3971 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.09.2013, 22:53     Объявить аргументы по шаблону #30
h3mbr0, к 12-й студии есть три апдейта и Visual C++ Compiler November 2012 CTP
После установки в опциях проекта поменя тулсет на CTP
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2013, 22:55     Объявить аргументы по шаблону
Еще ссылки по теме:

Не парсит аргументы - C++
Написал на досуге небольшую программку. Что обидно, вроде всё нормально, но проблеммы с парсингом аргументов командной строки. Весь код: ...

Аргументы функции - C++
Как правильно описать аргументы в некоторой функции void Func(int* a, int* b) { //... } Чтобы можно было вызывать её...

Не передаются аргументы - C++
float input_matrix(); void change_matrix(float**, int); void print_matrix(float**, int ); int main() { setlocale(LC_ALL,...

Аргументы функции - C++
Программа должна вычислять x-e число Фибоначчи по mod y. Вылетает ошибка, что передано слишком мало аргументов. Объясните недалекому...

Аргументы функции - C++
Привет! Как поступить в следующей ситуации. for (int i = 0; i &lt; 16; i++) { func(str1, str2); .... } дело в том...


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

Или воспользуйтесь поиском по форуму:
h3mbr0
205 / 48 / 8
Регистрация: 12.03.2012
Сообщений: 276
28.09.2013, 22:55  [ТС]     Объявить аргументы по шаблону #31
Цитата Сообщение от alex_x_x Посмотреть сообщение
h3mbr0, чет я не пойму - как это связано с


Добавлено через 16 секунд
Olivеr, а, ок
Для меня не было принципиальным функция это или указатель на нее, важен был факт что будет присутствовать проверка)

Цитата Сообщение от Jupiter Посмотреть сообщение
h3mbr0, к 12-й студии есть три апдейта и Visual C++ Compiler November 2012 CTP
Первый раз слышу о таком, благодарю
Yandex
Объявления
28.09.2013, 22:55     Объявить аргументы по шаблону
Ответ Создать тему
Опции темы

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