rtti.cpp
来自「介绍c++游戏编程」· C++ 代码 · 共 67 行
CPP
67 行
#include "stdafx.h"
#include "RTTI.h"
#include <stdarg.h>
RTTI::RTTI(const std::string & className) :
m_className(className),
m_numParents(0),
m_pBaseRTTI(NULL)
{}
RTTI::RTTI(const std::string & className, const RTTI & baseRTTI) :
m_className(className),
m_numParents(1)
{
m_pBaseRTTI = new const RTTI*[1];
m_pBaseRTTI[0] = &baseRTTI;
}
RTTI::RTTI(const std::string & className, int numParents, ...) :
m_className(className)
{
if (numParents < 1)
{
m_numParents = 0;
m_pBaseRTTI = NULL;
}
else
{
m_numParents = numParents;
m_pBaseRTTI = new const RTTI*[m_numParents];
va_list v;
va_start(v,numParents);
for (int i=0; i < m_numParents; ++i)
{
m_pBaseRTTI[i] = va_arg(v, const RTTI*);
}
va_end(v);
}
}
RTTI::~RTTI()
{
delete [] m_pBaseRTTI;
}
bool RTTI::DerivesFrom (const RTTI & rtti) const
{
const RTTI * pCompare = this;
if (pCompare == &rtti)
return true;
for (int i=0; i < m_numParents; ++i)
{
if (m_pBaseRTTI[i]->DerivesFrom(rtti))
return true;
}
return false;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?