C++中关于判断一个类是否继承于另外一个类的方法?解决思路

C++中关于判断一个类是否继承于另外一个类的方法?
Class A
{
Public:
Virtual void function(){}
}

Class B:public class A
{
Public:
Virtual void function(){}
}

Class C:public class B
{
Public:
Virtual void function(){}
}

C* p=new C;
我现在运行时刻判断C类是否继承于B或则A,应该怎么在C++中实现?比如说,我有下面这个函数
IsDerivedFrom(C,A),这样的功能应该怎么实现?


------解决方案--------------------
楼主~我系CSDN帮你找来的

用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

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=617287