Russian Qt Forum
Ноябрь 23, 2024, 08:28 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: ссылки на методы в качестве параметров шаблна  (Прочитано 3488 раз)
Eugene Efremov
Гость
« : Сентябрь 01, 2008, 23:28 »

Дано:

Код:
template<class type, void (type::*fun)()> class caller
{
type *ptr;

public:
caller(type *p) : ptr(p) {}

void operator()()
{
(ptr->*fun)();
}
};

Вопрос: можно ли переписать это дело так, чтобы вызов метода происходил напрямую, без использования указателей на члены: ptr->fun() ?

Думается мне, что нельзя, во всяком случае, напрямую написать что-нибудь вроде template<class type, void (type::fun)()> или template<class type, void (type::&fun)()> не получится...  Но вдруг?..
Записан
Tonal
Гость
« Ответ #1 : Сентябрь 02, 2008, 08:04 »

В чистом С++ нельзя. А в диалектах есть немного: __closure в багланде и extern в gcc.
В новом стандарте будут лямбды и замыкания - они должны решить эту проблему. Улыбающийся

Ну а если не терпится - есть Boost.Bind и Boost.Function, чтобы не изобретать великов. Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.048 секунд. Запросов: 21.