一个简易的类型判别器 C g,w6<7 Hn2Q1lF-ip 在某些时候,我们需要判别一个对象的类型,C++提供了
RTTI(运行时类型信息)机制,比如使用
typeid 关键字,但 Bjarne 建议尽量不要使用RTTI来判定对象类别,他提倡多使用使用 dynamic_cast 替代 typeid。当然typyid能准确判定对象的类型,而dynamic_cast不一定总能告诉我们对象的确切类型。
'
xq5tRg> RoXOGVo 下面是一个简单的类型判别器(不能用于基本类型,如int、double等):
rO>wX_ 代码: 全选/*
$G([#N< * File: TypeUtils.h
B!C32~[ * Author: kwarph [
kwarph@gmail.com ]
gYIYA"xN` * Time: 2009-3-21 下午03:25:02
rlh6\Fa *
~CTRPH * Copyright (C) 2008-2009, kwarph, All Rights Reserved.
w9?wy#YI */
nQ*oOxe|X j
W]c9u #ifndef TYPEUTILS_H_
L7'X7WYf& #define TYPEUTILS_H_
+[nYu)puP x-k/rZ template<typename T>
UVRV7^eTe struct InstanceOf {
X~VZ61vNu |&*rSp2iH template<typename T1>
.:Xe* Q static bool test(const T1*& ptr) {
;Cpm3at const T* t = dynamic_cast<const T*> (ptr);
k5<