簡體   English   中英

基類c ++子類的通用設計接口

[英]Common design interface for child classes of base class c++

我有虛擬班車。 從這個班級有不同的兒童班。

在我的界面中,我有功能

   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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM