【发布时间】:2018-03-05 07:57:24
【问题描述】:
所以我有以下情况:我有一个不受我控制的 (C++) 驱动程序,我有头文件和库文件,但没有源代码。我想在我的软件中模拟驱动程序(不仅仅是为了测试,而是使用与实际实现相同的代码)。从基类创建派生类并重新实现所有方法很容易,除了驱动程序库中的方法都没有标记为虚拟,因此我无法继承它们并在我的代码中仍然使用相同的基类型。我不能仅为模拟版本创建自定义标头,因为我希望能够将相同的代码用于模拟或真实驱动程序。我有点难过,如何从这个非虚基创建派生类?
【问题讨论】:
-
“我有点难过” - 我也是。因为我完全不明白你想要完成什么。
-
我有一个基类 Driver,它没有虚方法。我有一个程序通过 Driver* 指针使用该对象。我想实现一个继承自 Driver 的类 SimulationDriver。然后在我的软件中,我可以使用具有相同代码的真实驱动程序或 SimulationDriver。
-
我第一次读。恐怕在评论中再次说明并不能让它更清楚。
-
恐怕你不能。您当然可以从基类继承,但不能使用多态特性。
-
@Dago -- 可能基类的原作者有意不让您从中派生,这就是函数不是虚拟的原因。
标签: c++ inheritance