读书人

template 判定是否是class,该如何处理

发布时间: 2012-04-02 19:58:59 作者: rapoo

template 判定是否是class
c++ template中有一个例子:
template < typename T >
class IsClass {
private:
typedef char one;
typedef struct { char a[2]; } two;

template < typename C >
static one test( int C::* );

template < typename C >
static two test(...);

public:
enum { Yes = sizeof( test<T>(0) ) == 1 }; //原来的是 IsClass<T>::test<T>(0),但是VS编译不了
enum { No = !Yes };
};
想问的是:“ int C::*”是什么东西?感觉不是指向成员函数的指针

[解决办法]
是数据成员指针.和类成员函数指针 一样都是类成员指针.

读书人网 >C++

热点推荐