Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2012, 03:54   #1
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию Указатель и шаблонные функции

Дана к примеру функция:

Код:
template<class TypeName> void push_stack(TypeName &inItem)
{
      . . .Реализация. . . 
}
Как объявить на нее указатель. Извините если вопрос тупой)))
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Старый 16.07.2012, 04:01   #2
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Если я не ошибаюсь то можно сделать так:

Код:
void (*ptr) (int);
ptr = push_stack;

void (*ptr) (double);
ptr = push_stack;

void (*ptr) (float);
ptr = push_stack;

void (*ptr) (char);
ptr = push_stack;
Есть ли более короткие способы?
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Старый 16.07.2012, 04:20   #3
rlib
Форумчанин
 
Аватар для rlib
 
Регистрация: 22.05.2012
Сообщений: 352
По умолчанию

Насколько мне известно, нет указателей на темплэйт-функцию. Придется для каждого инстанциируемого типа описывать указатель, как вы и сделали.
rlib вне форума Ответить с цитированием
Старый 16.07.2012, 08:53   #4
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Я так понял, тебе нужна автоматическое порождение указателей на функцию, в зависимости от используемых типов:

void Foo(int val) { cout<<"int\n"; }
void Bar(char val){ cout<<"char\n"; }

UserFunc func;

func = Foo; //UserFunc перенастроился на тип данных указателя void(*)(int);
func = Bar; //UserFunc перенастроился на тип данных указателя void(*)(char);

Вопрос на самом деле не простой. Предметная область выходит за рамки обобщенного программирования. Для конструирования такого интеллектуального указателя придется прибегнуть к услугам мета-программирования.

А полученный код окажется не тривиальным.

Читай Джосасиса, читай Александресску, кури библиотеку LOKI, бустовские бинды, функторы, сигналы.

Последний раз редактировалось _Bers; 16.07.2012 в 09:19.
_Bers вне форума Ответить с цитированием
Старый 16.07.2012, 14:59   #5
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Спасибо. Похоже эт еще мне рановато
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.
kineziz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шаблонные функции c++, кастование pwturbenn Общие вопросы C/C++ 5 07.01.2011 22:18
шаблонные функции, как помочь компилятору выбрать определенную. Пепел Феникса Общие вопросы C/C++ 19 08.12.2010 13:47
Шаблонные функции в классе Impuls1989 Общие вопросы C/C++ 5 20.09.2010 09:04
Почему нельзя разбивать на отдельные файлы шаблонные функции и классы? lordius Visual C++ 22 08.07.2010 09:49
шаблонные строковые функции MrKarapuz Общие вопросы C/C++ 7 09.11.2009 15:07