关闭

用template来判断类继承的关系

标签: classnull
992人阅读 评论(0) 收藏 举报

用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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:50978次
    • 积分:755
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:19篇
    • 译文:2篇
    • 评论:8条
    最新评论