我有一个可以自己构建的 .dll。我有一个类 ,Lion
它派生自库中的一个类Cat
,它覆盖了一个虚函数 ,Leap()
。我想创建一个类型的对象Lion
,将它传递给期望类型为的库函数Cat
,这样当他们调用 时Cat->Leap()
,他们使用覆盖的虚函数Lion->Leap()
,
这是可能吗?
到目前为止,我尝试过的所有事情都以被忽略的覆盖函数告终。我猜这是因为在编译库时,它会解决如何解决对 的调用Leap()
,此时我的派生类型不存在。或者,因为库引用类型的对象Cat
(实际上是类型Lion
),所以它调用Cat::Leap()
,而不是Lion::Leap()
。
我曾认为该函数是虚拟的这一事实意味着,即使它是从库中调用的,它也会通过在运行时查看对象的 vtable 来解决调用,这将是派生的类型。
谢谢。