使用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'
任何熟悉这个库的人都知道如何让第一行工作吗?
答案 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;
...很抱歉