2008-11-02 8 views
3

Дать что-то вроде этого, используя loki library,Как создать нульарный функтор в C++ (с использованием библиотеки Loki)

typedef Functor<void> BitButtonPushHandler; 

вызывает ошибку компиляции, но это работает

typedef Functor<void,TYPELIST_1(Matrix3D*)> Perspective; 

Functor.h:530: error: '((Loki::FunctorHandler, int>*)this)->Loki::FunctorHandler, int>::f_' cannot be used as a function Functor.h:530: error: return-statement with a value, in function returning 'void'

Кто-нибудь, знакомый с этой библиотекой, знает, как заставить первую линию работать?

ответ

3

Глядя на исходный код, определение шаблона Functor выглядит следующим образом:

template <typename R = void, class TList = NullType, 
     template<class, class> class ThreadingModel = LOKI_DEFAULT_THREADING_NO_OBJ_LEVEL> 
    class Functor{...}; 

Как прокомментировал ниже, нет никаких шаблонов определения типов допускается, поэтому все типы (или принимать все значения по умолчанию) должны быть указаны.

Вы можете просто определить, как следует, и пусть по умолчанию делает работу:

typedef Functor<> BitButtonPushHandler; 

Это компилирует для меня с классом Functor небольшого теста (не фактический Loki один), и я могу использовать ЬурейиЙ успешно ,

0

То, что я изначально писал работал ... это было поздно, и я забыл про ...

using namespace Loki; 

... так жаль

 Смежные вопросы

  • Нет связанных вопросов^_^