C++でクラス名を判定する

プログラミングをしていると、時々クラス名を取得したいときがあります。 MFCの「CObject」の派生クラスだと、CObject::IsKindOf で判定することができます。

では、普通のクラスの場合は、どうしたら良いのか? 調べると、下記のコードのように typeid を使うことで、普通のクラス名の取得・判定をすることができることがわかりました。

#include "typeinfo.h"
 
    // クラス名を取得
    const type_info& id = typeid(*this);

    if (typeid(CSample) == id)
    {
        // クラス名は「CSample」です。
    }