3

使用loki 库编写类似的东西,

typedef Functor<void> BitButtonPushHandler;

引发编译器错误,但这有效

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

Functor.h:530: error: '((Loki::FunctorHandler, int>*)this)->Loki::FunctorHandler, int>::f_' 不能用作函数 Functor.h:530: error: return - 带有值的语句,在返回“void”的函数中

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

4

2 回答 2

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 类),我可以成功使用 typedef。

于 2008-11-02T17:10:14.497 回答
0

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

using namespace Loki; 

...非常抱歉

于 2008-11-03T08:47:11.970 回答