This would be a total abuse of object-oriented functionality. One of the major ideas behind OOP is making the use of instances of classes type-agnostic. For this purpose, the difference between the runtime types and compile-time types has been created. The compiler works with a variable of some type, which is a compile-time type, but this variable can be assigned to the object of some derived type, which will be the runtime type. The code using this instance remains unaware of actual type. It is compiled in the assumptions based on on the compile-time type, which server as a common interface for two or more derived types. Moreover, some of the functions called on this variable, directly or indirectly, can be overridden to achieve different behavior. They are dispatched dynamically, so a function defined in a base type will call some virtual method, but actual implementation dispatched to this inner call will depend on what runtime type is that.
Now, one of the main principle of object-oriented design is too keep agnostic code agnostic. Knowing the runtime type is never a goal. The real goal is to get some correct behavior. You need to design your class hierarchy, and, most importantly, the virtual functions, overridden or not, the way to achieve that functionality.
So, no positive advice for your — you went too far in wrong direction. I only can tell you what can help you. First of all, learning of OOP ideas and techniques. I hope your mistake can become be a good source of ideas and a good lesson to learn. But first of all, you need to realize what your problem really is. I can tell you what is it: you create your class hierarchy, virtual functions and overrides with the only purpose: to create something to struggle against, instead of helping to achieve your goals.
If you can formulate your real goal, we can consider concrete solutions. I'm afraid even that could be difficult for you. Please, you have to realize what is the concept of the "goal" in your case. You cannot say, for example, "I want to know the type", or "I want to override", or "I want to create a class which…". Those would be some possible tools for solving problems, but not the goals. In other words, you should clean up formulation of your problem from your present-day thinking on how it can be solved, present a clear problem. Care to try?
—SA