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

📄 rtti.h

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

#ifndef RTTI_H_
#define RTTI_H_


class RTTI 
{
  public:
    RTTI(const std::string & className);
    RTTI(const std::string & className, const RTTI & baseRTTI);
    RTTI(const std::string & className, int numParents, ...);
    ~RTTI();

    const std::string & GetClassName() const { return m_className; }
    bool IsExactly(const RTTI & rtti) const { return (this == &rtti); }
    bool DerivesFrom (const RTTI & rtti) const;

  private:
    // Prevent copying
    RTTI( const RTTI & obj );
    RTTI & operator=( const RTTI & obj );

    const std::string m_className;

    int           m_numParents;
    const RTTI ** m_pBaseRTTI;
};


#define RTTI_DECL \
    public: \
        virtual const RTTI & GetRTTI() { return rtti; } \
        static const RTTI rtti;

#define RTTI_ROOT_IMPL(name) \
    const RTTI name::rtti(#name);

#define RTTI_IMPL(name,parent) \
    const RTTI name::rtti(#name, parent::rtti);


#endif  // _RTTI_H_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -