c++ - 基类c++子类通用设计接口(interface)

标签 c++ class user-interface interface

我有虚拟类 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/

相关文章:

c++ - 堆上和栈上应用问题

c++ - 是否可以从宏定义宏

c++ - 如何加快这个盒子堆叠变化?

c++ - 临时字符串上的 std::string_view - 由 ASan 捕获

ios - 如何从不同的 swift 类重置变量/步进值

c++ - 使用类模板需要参数列表

java - 如何阻止 Java Swing JOptionPane OK_CANCEL_OPTION 在 OK 选项上关闭?

visual-studio-2010 - 在Visual Studio中更改选定文本的文本颜色

C++:如何为多维 vector 创建构造函数?

java - 如何向 fragment 选项卡添加动态 UI?