0

ブーストscope_guardを使用しようとしています

メンバ関数の関数ポインタを make_guard 関数に送信する必要があります

私は次の方法でそれを試しました:

class A
{
  HRESULT foo(int x);
  HRESULT foo_1(int x);
}

STDMETHODIMP A::foo(int x)
{....};

STDMETHODIMP A::foo_1(int x)
{

    boost::scope_guard xyz= 
    boost::make_guard(&A::foo, x);
}

しかし、コンパイルエラーが発生します:

E:\ThirdPartyCore\Boost\1_43_0\winx64\include\boost/multi_index/detail/scope_guard.hpp(103) : error C2064: term does not evaluate to a function taking 1 arguments
        E:\ThirdPartyCore\Boost\1_43_0\winx64\include\boost/multi_index/detail/scope_guard.hpp(103) : while compiling class template member function 'void boost::multi_index::detail::scope_guard_impl1<F,P1>::execute(void)'
        with
        [
            F=HRESULT (__cdecl A::* )(int),
            P1=int
        ]
        see reference to class template instantiation 'boost::multi_index::detail::scope_guard_impl1<F,P1>' being compiled
        with
        [
            F=HRESULT (__cdecl A::* )(int),
            P1=int
        ]

AGPSEngine - 1 error(s), 0 warning(s)

誰でもそれを修正するのを手伝ってくれませんか。

4

1 に答える 1

0

エラー メッセージが示すように、A::foo1 つのパラメーターを取る関数ではありません。それはメンバー関数です。私はあなたが使いたいと信じてobj_scope_guardmake_obj_scope_guardますthis.

于 2012-08-28T09:58:16.020 に答える