我尝试定义类似于Vala教程中ValueHash
示例的ValueList
:
[Compact]
public class ValueHash : HashTable<string, Value?> {
[CCode (has_construct_function = false)]
protected ValueHash ();
}
使用valac 0.22进行编译会产生
error: unable to chain up to base constructor requiring arguments
protected ValueHash ();
在网上搜索我认为需要调用bas()构造函数,但是如何?
尝试(我知道null
在这里不是一个有效的参数):
protected ValueHash () { base(null, null); }
的产率:
error: too few arguments to function ‘g_hash_table_new_full’
protected ValueHash () { base(null, null); }
好的,可能还需要一个参数?
protected ValueHash () { base(null, null, null); }
的产率:
error: Too many arguments, method `GLib.HashTable<string,GLib.Value?>'
does not take 3 arguments
protected ValueHash () { base(null, null, null); }
我无法弄清楚这里发生了什么。由于gobject已经在GLib命名空间中定义了ValueArray
,因此ValueHash
会派上用场,但顺便说一下,这似乎是在libsoup-2.4中定义的,但我不想引入依赖关系在我的libsoup
代码。
感谢任何提示。
答案 0 :(得分:2)
我不确定是否有一种方法可以链接到2参数构造函数(或者如果您看到的确实是一个错误),但我相信在任何情况下都明确调用4参数版本:< / p>
[Compact]
public class ValueHash : HashTable<string, Value?> {
[CCode (has_construct_function = false)]
protected ValueHash () {
base.full (str_hash, str_equal, null, null);
}
}