Well it only works if I cast it but I lose all the functionality of polymorphism. I had in mind to use the base class pointer to iterate to a big array of pointers and access their functions no matter what types they are (inherited by main class). If I need to cast I have to do everything manually.