如何在 C++ 中创建无效函子(使用 loki 库)

问题描述 投票:0回答:2

使用 loki 库写这样的东西

typedef Functor<void> BitButtonPushHandler;

抛出编译器错误,但这有效

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

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

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

c++ functor c++-loki
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。


0
投票

我最初写的有效...已经晚了,我忘记了...

using namespace Loki; 

...非常抱歉

© www.soinside.com 2019 - 2024. All rights reserved.