Casting in C++ is not meant to actually change the type of the object you are casting. It is meant to be able to treat an object as if it were something different.
This works for example if you have a child object and cast it to the parent class: it will work, because the child object has everything that the parent object has, it can therefore be treated as if it was a parent object. The other way around (like you are trying to do here) does not work, since the parent object may not have all the variables the child class has and can therefore not be treated as a child object. The Cast checks if a cast is possible and returns nullptr if it’s not possible (which is what you get).
So casting doesn’t change the type of an object, just how you can treat it. If you want an object of a type, you have to create as that type.