I have a global function within a namespace and this function is a helper function that will create objects and return them. However the return type is of the parent class, but the actual object returned is a subclass of the parent. It is then up to the user to cast it returned "parent" object to the appropriate subclass. I thought this is what polymorphism was about but I am not able to cast the returned object to a subclass. For example:
class Parent {...};
class ChildOne : public Parent {...};
class ChildTwo : public Parent {...};
Parent my_function(int x) {
    if(x) {
        return ChildOne();
    }
    else {
        return ChildTwo();
    }
};
int main() {
    // The statement below is giving me an error (no matching function call...)
    ChildOne my_child = (ChildOne)my_function(1);
}
 
     
     
    