If you have a method in C++ that is BlueprintCallable, and it returns a pointer to myBasePawn, then in Blueprint it will only be a myBasePawn. C++ has no idea that there is another base class of myBasePawnBP, so once you use the BlueprintCallable method, you lose information that myBasePawnBP contains, and only those that remain with myBasePawn exists.