2

がある場合は、テンプレート パラメーターとしてclass T{ void M() };使用できるテンプレート クラスが必要です。T::M次のように言います。

T t;
TUser<T::M> user(t);

出来ますか?

4

1 に答える 1

5

はい、可能です:

template< typename T, void (T::*M)() >
struct something
{
    void somewhere( T* obj )
    {
        (obj->*M)();
    }
};

そして、次のように使用されます:

T t;
something< T, &T::M > user;
user.somewhere( &t );
于 2011-11-16T21:57:16.830 に答える