Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: шаблон raii замены указателя на фукнцию  (Прочитано 32373 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mayor
Специалист

ru
Offline Offline

« Ответ #30 : 25-12-2009 07:22 » 

неа не решил, шаблон должен подходить для любого типа фукнции

вот так передают в шаблон тип через аргумент:
Код:
template<class T> T sum(T a,T b) { return a+b; }
string s,s1,s2;
s2=sum(s1,s);



Записан

1n c0de we trust
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #31 : 25-12-2009 08:17 » 

sum<string> забыл )
Записан

lapulya
Молодой специалист

ru
Offline Offline

« Ответ #32 : 25-12-2009 13:21 » 

Mayor, это не передача типа, а передача параметра определенного типа (большая разница).
Алексей1153++, sum<string> в данном примере нужен для возвращаемого значения (если бы функция возвращала строго определенный тип данных, эта спецификация не требуется)

Mayor, я так и не понял что же нужно (только понял, что то что предложено не нужно Улыбаюсь ), могу предложить это (хотя это уже на гадание похоже). Первый параметр у f, как ты говоришь, для "передачи типа"
Код:
#include "stdafx.h"
#include <string>

typedef long (*f1)();
typedef int (*f2)();

int f11() {return 1;}
long f22() {return 2;}

template<class T, class P> void f(T a, P b)
{
T x = b();
x += 1;
};

int main()
{
f(int(1), f11);
f(int(2), f22);
f(long(3), f11);
f(long(4), f22);

return 0;
}

Это то что нужно? Тут можно любую функцию передать, но понятно, что шаблон должен принимать (ну если должен) все необходимые параметры. Но при этом как минимум по одному параметру каждого типа аргумента передаваемой функции (при условии что эти типы не фиксированы например в реализации шаблона)
« Последнее редактирование: 25-12-2009 14:01 от lapulya » Записан

С уважением Lapulya
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines