2016-06-05 1 views
1

J'essayais de compiler libfriends (source) contre valac (.28) et libgee (1.0). J'ai spécifiquement compilé ces derniers contre la pile Ubuntu-16.04.Impossible de convertir `GLib.TypeClass 'en` GLib.ObjectClass'

Mais j'obtiens l'erreur suivante

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());

Je ne trouve pas vraiment quelque chose de mal avec le code. Une idée?

Le buildlog entier est ici: https://launchpadlibrarian.net/263631082/buildlog_ubuntu-xenial-i386.libfriends_0.1.2+14.10.20140709+201606051415~ubuntu16.04.1_BUILDING.txt.gz

Répondre

1

Je viens de vérifier et il compile avec valac-0.18, mais ne compilent pas avec valac-0.28.

Il doit donc y avoir eu un changement entre les versions valac qui effectuent une vérification de type plus stricte dans ce cas. (Vraiment GTypeClass en C) is the parent class de GLib.ObjectClass (vraiment GObjectClass en C).

Donc le compilateur est correct de ne pas autoriser cela sans un cast. Je ne sais pas si le casting est correct dans cette situation, mais il fait la compilation de code:

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

Voir aussi valadoc pour GObjectClass où une conversion de type similaire est fait dans le code exemple:

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

+0

Il semble que vous ayez raison. Il compile contre vala-0.18. Et votre code modifié fonctionne également. Merci. –