Если вы просто хотите проверить, является ли это определенный класс, то
typeid(obj) == typeid(CSubClass)
всегда будет работать независимо от реализаций.
В противном случае удобным способом является объявление:
virtual const char* classname() { return "CMyClass";}
и реализовать для каждого подкласса.