如何在C ++中创建一个nullary Functor(使用loki库)

时间:2008-11-02 16:23:28

标签: c++ loki

使用loki library

写下这样的内容
typedef Functor<void> BitButtonPushHandler;

抛出编译器错误,但这可行

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

Functor.h:530:错误:'((Loki :: FunctorHandler,int&gt; *)this) - &gt; Loki :: FunctorHandler,int&gt; :: f_'不能用作函数   Functor.h:530:错误:带有值的return语句,函数返回'void'

任何熟悉这个库的人都知道如何让第一行工作吗?

2 个答案:

答案 0 :(得分:3)

查看源代码,Functor模板定义如下:

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

如下所述,不允许使用模板typedef,因此需要指定所有类型(或接受所有默认值)。

您可以定义如下,让默认设置完成工作:

typedef Functor<> BitButtonPushHandler;

这为我编译了一个小测试Functor类(而不是实际的Loki类),我可以成功使用typedef。

答案 1 :(得分:0)

我最初写的作品......已经很晚了,我忘记了......

using namespace Loki; 

...很抱歉