基类c++的子类的通用设计接口
Common design interface for child classes of base class c++
我有一个虚拟类Car。这个班有不同的儿童班。
在我的界面中,我有功能
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循环之前实例化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++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- Visual C++GC接口如何启用它以及要包含哪个库
- Windows.h与GLFW.h的接口
- 当字段可以为null时,如何使用C++接口在Avro中写入数据
- 提供与TMP和SFINAE的通用接口
- 为重写std::exception的库生成swig接口时出错
- 内联如何影响模块接口中的成员函数
- COM 接口 c# 封送数组数组
- 如何在 SCIP C++ 接口中获取 MILP 约束矩阵中的系数值
- 重载 -> shared_ptr 个实例中的箭头运算符<interface>,接口中没有纯虚拟析构函数
- 如何绑定 C++ gRPC 客户端的网络接口
- 模板化接口 - 创建一个泛型模板类以返回任何容器
- 如何从实现接口的模板化类实例访问结构
- 带有进度表的 curl 多接口程序
- 设计帮助 - 为不同类型的消息处理通用接口的设计模式
- 我可以在具有一个标头和一个接口的 cpp 文件中有多个嵌入吗?
- 类接口,可以创建N个方法
- 类具有相同的接口,但参数的类型不同
- 如何与 Cheerp/js 中的 extern 变量接口?
- 如何使用现代 CMake 安装捆绑的接口依赖项?