我有虚拟类 Car。 从这个类(class)有不同的子类(class)。
在我的界面中,我有函数
ride(std::string type = "mercedes")
函数采用参数类型,并根据此决定实例化哪辆车并执行骑行。 目前,我执行以下操作:
ride(std::string type = "mercedes")
{
if(type =="btw")
{
auto car = std::make_shared<BMW>();
car.ride();
}
else if(type =="audi")
{
auto car = std::make_shared<Audi>();
car.ride();
}
default
{
auto car = std::make_shared<Mercedes >();
car.ride();
}
}
在 if-else-loop 之前实例化 Car 然后只分配适当的类型的方法是什么?
非常感谢!
最佳答案
我认为你应该使用工厂方法来实例化基于模型的派生类,然后使用基指针调用派生方法(ride()
)。
Car{
public:
static Car* Factory(std::string type = "mercedes") {
if( type == "mercedes")
return std::make_shared<Mercedes>();
else if( type == "bmw" )
return std::make_shared<BMW>();
}
virtual int ride();
}
用法:
Car *car = Car::Factory("mercedes");
car->ride();
关于c++ - 基类c++子类通用设计接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37307887/