#pragma once #include "RTTI_Meta.h" // Interface RTTI class IRTTI { protected: Classes type; virtual ~IRTTI() = default; public: Classes RTTI_Kind() const; friend class RTTI; }; // RTTI metods class RTTI final { RTTI() = default; public: template static bool IsA(Classes type) { return Meta::TypeStr == type; } template static To* dyn_cast(From* object) { return IsA(static_cast(object)->type) ? reinterpret_cast(object) : nullptr; } };