[英]C++: inherit from both base class and multiple interfaces with common base interface
[英]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.