用template来判断类继承的关系
能自动判断一个类是不是从另外一个类继承下来的:
template<typename T , typename TBase> class TIsDerived
{
public:
static int t(TBase* base)
{
return 1;
}
static char t(void* t2)
{
return 0;
}
enum
{
Result = ( sizeof(int) == sizeof(t( (T*)NULL) ) ),
};
};
用途:
bool AISDerviedFromB = TIsDerived<ClassA, ClassB>::Result ;
如果ClassA是从ClassB派生的,那么 AISDerviedFromB 为true, 否则为false
本文介绍了一种使用模板元编程技术来自动判断一个类是否从另一个类继承的方法。通过一个简单的示例,展示了如何实现这一功能,并提供了如何使用该模板类来获取继承关系的真假值。
664

被折叠的 条评论
为什么被折叠?



