c – 使库函数使用从库类派生的类

c – 使库函数使用从库类派生的类,第1张

概述我有一个.dll,我可以自己建立.我有一个类Lion,派生自库中的类Cat,它覆盖了一个虚函数Leap().我想创建一个Lion类型的对象,将它传递给期望一种类型Cat的库函数,这样当它们调用Cat-> Leap()时,它们使用覆盖的虚函数Lion-> Leap( ). 这是可能吗? 到目前为止,我尝试过的所有内容最终都被忽略了被覆盖的功能.我猜这是因为当编译库时,它解决了如何解析对Leap()的 我有一个.dll,我可以自己建立.我有一个类lion,派生自库中的类Cat,它覆盖了一个虚函数Leap().我想创建一个lion类型的对象,将它传递给期望一种类型Cat的库函数,这样当它们调用Cat-> Leap()时,它们使用覆盖的虚函数lion-> Leap( ).

这是可能吗?

到目前为止,我尝试过的所有内容最终都被忽略了被覆盖的功能.我猜这是因为当编译库时,它解决了如何解析对Leap()的调用,此时我的派生类型不存在.或者,因为库引用了Cat类型的对象(实际上是lion类型),所以它调用Cat :: Leap(),而不是lion :: Leap().

我曾经认为函数是虚拟的这一事实意味着,即使它是从库中调用的,它也会通过在运行时查看对象的vtable来解析调用,这将是派生的类型.

谢谢.

解决方法 为了使其工作,库需要以某种方式编写:它应该通过引用或指针来获取它的Cats,而不是通过值(不幸的是,参数在C中传递的默认方式).如果您将lion传递给期望Cat值的函数,则lion会获得 sliced到Cat,并且就函数而言实际上变为Cat. 总结

以上是内存溢出为你收集整理的c – 使库函数使用从库类派生的类全部内容,希望文章能够帮你解决c – 使库函数使用从库类派生的类所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1230197.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存