⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtti.cpp

📁 介绍c++游戏编程
💻 CPP
字号:

#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -