我决定回到 GObject 中 GInterfaces 的基础知识,所以我又去阅读了基础教程。在本章中,您可以看到如何定义一个非常简单的 GInterface。
如您所见,方法maman_ibaz_do_action
和maman_ibaz_do_something
的签名分别与符号_MamanIbazInterface.do_action
和的签名匹配_MamanIbazInterface.do_something
。
但如果他们不这样做会发生什么?我有一个真实的例子。GInterface 是gpollableinputstream ( source here )。该方法特别是 read_nonblocking(),它在 VT 中有 4 个参数,但后来它在标头函数中有 5 个参数。
那么,如果这个接口的实现者覆盖了前者(这里是真实世界的例子),那么有人怎么能从其他类调用这个实现呢?