我有一个由继承定义的 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 );