3

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: エラー: 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 は許可されていないため、すべてのタイプ (またはすべてのデフォルトを受け入れる) を指定する必要があります。

次のように定義して、デフォルトで機能させることができます。

typedef Functor<> BitButtonPushHandler;

これは小さなテスト Functor クラス (実際の Loki のものではない) でコンパイルされ、typedef を正常に使用できます。

于 2008-11-02T17:10:14.497 に答える
0

最初に書いたものはうまくいきました...遅くなり、忘れてしまいました...

using namespace Loki; 

...申し訳ありません

于 2008-11-03T08:47:11.970 に答える