Почему вы должны определить? Если вам абсолютно необходимо, вы можете использовать поле typeid через RTTI. Но обычно, если вы используете виртуальные методы, если ваша программа хорошо спроектирована, вам не нужно знать, что такое класс. Вызов виртуальной функции для ссылки на базовый класс или указателя вызовет метод соответствующего экземпляра в зависимости от того, на что он указывает.
В этом весь смысл полиморфизма через иерархию классов.
Но опять же, используйте typeid, если вам абсолютно необходимо знать, к какому классу относится экземпляр.
Кроме того, вы не можете получить доступ к данным производных членов класса через указатели базовых классов. Вы можете говорить только через интерфейс базового класса. в этом весь смысл абстракции.
Один из уродливых способов - создать толстый интерфейс, который предоставляет аксессорам / мутаторам эти члены данных в интерфейсе базового класса в виде функций виртуальных членов.