无法从“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 ());
我真的没有发现代码有任何问题。有什么想法吗?
我刚刚检查过,它使用 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
,其中在示例代码中完成了类似的类型转换:
我试图针对 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 ());
我真的没有发现代码有任何问题。有什么想法吗?
我刚刚检查过,它使用 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
,其中在示例代码中完成了类似的类型转换: