如何定义ValueHash?

时间:2013-11-20 08:35:11

标签: vala

我尝试定义类似于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 代码。

感谢任何提示。

1 个答案:

答案 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);
    }
}