如何判断模版参数是不是指针?
本帖最后由 zilaishuichina 于 2013-03-01 17:21:10 编辑 template <class T>
struct A
{
T m_Obj;
}
可以定义
A<B> a1;
也可以定义
A<C *> a2;
现在我想在模板中判断m_Obj的类型是一个对象类型,还是对象的指针
因为在模板中使用m_Obj时,
如果m_Obj是对象类型,那么应该是m_Obj.XXX
如果m_Obj是对象的指针类型,那么应该是m_Obj->XXX
[解决办法]
struct TrueType {};
struct FalseType {};
template< typename T >
struct Is_Pointer
{
typedef FalseType RESULT;
};
template< typename T >
struct Is_Pointer< T* >
{
typedef TrueType RESULT;
};
template <class T>
struct A
{
T m_Obj;
void fun( )
{
........
if( Is_Pointer< T >::RESULT ) ....m_Obj->xxx;
else .......m_Obj.xxx;
........
}
};
template <class T>
struct A
{
T m_Obj;
void fun( )
{
.........
.......GetSubObject( Is_Pointer< T >::RESULT );
.......
}
private :
int GetSubObject( TrueType ){ return m_Obj->xxx; }
int GetSubObject( FalseType ){ return m_Obj.xxx; }
};