仮想関数がない場合、typeidを使用しても基底クラスの型が返されるため、派生クラスの型を取得することはできません。 この場合、以下の方法を検討できます。 手動での型管理: 各クラスに型を示すメンバ変数を追加し、オブジェクトの型を手動で管理する方法があります。 例えば、enumを使って型を定義し、オブジェクトの型を示すことができます。 型情報を持つ基底クラス: 基底クラスに型情報を持たせることで、派生クラスの型を識別できるようにすることも可能です。 例えば、基底クラスにgetType()メソッドを追加し、派生クラスでオーバーライドすることで、型を取得できます。 ただし、これらの方法はdynamic_castやtypeidを使用する場合に比べて手間がかかるため、仮想関数を使用することが推奨されます。