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 回答