我在命名空间中有一个全局函数,这个函数是一个辅助函数,它将创建对象并返回它们。然而返回类型是父类,但实际返回的对象是父类的子类。然后由用户将其返回的“父”对象转换为适当的子类。我认为这就是多态性,但我无法将返回的对象转换为子类。例如:
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);
}