//这是比较地址,怎么能比较类型呀?
struct TypeInfo
{
char* className;
int type_id;
TypeInfo* pBaseClass;
operator== (const TypeInfo& info){return this==&info;} //这是比较地址,怎么能比较类型呀?
operator!= (const TypeInfo& info){return this!=&info;}
};
class UObject
{
public:
bool IsKindOf(TypeInfo& cls); //判别某个对象是否属于某一个类
public:
virtual int GetTypeID(){return rttiTypeInfo.type_id;}
virtual char* GetTypeName(){return rttiTypeInfo.className;}
virtual TypeInfo& GetTypeInfo(){return rttiTypeInfo;}
static TypeInfo& GetTypeInfoClass()
{return rttiTypeInfo;}
private:
static TypeInfo rttiTypeInfo;
};
//依次为className、type_id、pBaseClass赋值TypeInfo
UObject::rttiTypeInfo={"UObject",0,NULL};