无法从“GLib.TypeClass”转换为“GLib.ObjectClass”

Cannot convert from `GLib.TypeClass' to `GLib.ObjectClass'

我试图针对 valac (.28) 和 libgee (1.0) 编译 libfriends (source)。我专门针对 Ubuntu-16.04 堆栈编译了这些。

但我收到以下错误

entry.vala:397.38-397.38: warning: if-statement without body if (_selected != value); ^ entry.vala:172.52-172.86: error: Argument 1: Cannot convert from `GLib.TypeClass' to `GLib.ObjectClass' binding_set = Gtk.BindingSet.by_class (typeof (InputTextView).class_ref ());

我真的没有发现代码有任何问题。有什么想法吗?

完整的构建日志在这里:https://launchpadlibrarian.net/263631082/buildlog_ubuntu-xenial-i386.libfriends_0.1.2+14.10.20140709+201606051415~ubuntu16.04.1_BUILDING.txt.gz

我刚刚检查过,它使用 valac-0.18 编译,但不使用 valac-0.28 编译。

所以在这种情况下,valac 版本之间肯定有变化,进行更严格的类型检查。

GLib.TypeClass(实际上是 C 中的 GTypeClass)is the parent class of GLib.ObjectClass(实际上是 C 中的 GObjectClass)。

所以编译器不允许在没有转换的情况下这样做是正确的。我不知道在这种情况下转换是否正确,但它使代码编译:

binding_set = Gtk.BindingSet.by_class ((ObjectClass) typeof (InputTextView).class_ref ())

另请参阅 valadoc for GObjectClass,其中在示例代码中完成了类似的类型转换:

http://valadoc.org/#!api=gobject-2.0/GLib.ObjectClass