2008-11-02 41 views
3

使用loki library寫這樣的事情,如何創建在C++(使用洛基庫)的零元函子

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

綜觀源代碼,函子模板定義如下:

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

如下面評論的,沒有允許模板的typedef,因此,所有類型(或接受所有默認值)需要被指定。

您只需定義如下,讓默認做的工作:

typedef Functor<> BitButtonPushHandler; 

這編譯了我一個小的測試函數子類(而不是實際洛基之一),我可以成功使用的typedef 。

0

我原來寫的工作......這是遲到了,我忘了...

using namespace Loki; 

...很抱歉

相關問題