継承によって定義されたC++クラス階層があり、この階層の説明を格納して、後でイントロスペクションに使用できるようにします。私が現在行っている方法よりも、これを定義するためのより効率的またはよりクリーンな方法があるかどうかを知りたいです。これが私のコードの簡略版です
// in header file (hpp)
struct Type
{
Type( const string& n, const Type* p = nullptr ) : name(n), parent(p) {}
const string name;
const Type* parent;
};
class Base
{
public:
static const Type m_type;
virtual const Type& type() const { return m_type; }
};
class Derived : public Base
{
public:
static const Type m_type;
const Type& type() const { return m_type; }
};
// in implementation file (cpp)
const Type Base::m_type( "Base" );
const Type Derived::m_type( "Derived", &Base::m_type );