gpt4 book ai didi

oop - 不支持链接到 'Gtk.Box.new'

转载 作者:行者123 更新时间:2023-12-03 21:33:56 25 4
gpt4 key购买 nike

我是 Vala 的新手,到目前为止我认为它很酷,但我在理解继承方面遇到了麻烦。我读过 here 说我应该使用 base() 来调用父构造函数。好吧,很酷,似乎可以理解,但它对我不起作用。我一直收到标题上的错误。这是我要显示的片段:

public class MyBox : Gtk.Box {
public MyBox(Gtk.Orientation orientation, int spacing) {
// I have to this
this.set_orientation(orientation);
this.set_spacing(spacing);
// I want to do this:
base(orientation, spacing);
//workaround is this:
Object(orientation: orientation, spacing: spacing);
}
}

请帮助我理解为什么 Object(....) 有效但 base(...)

不应该是一样的吗?

最佳答案

这是由于 C 代码的实现。当 Vala 生成构造函数时,它会生成两个 C 函数,一个是分配内存并调用 _new_construct 函数,另一个是初始化对象的 _construct 函数。当您使用 base() 对基本构造函数进行 case 时,它​​需要一个匹配的 _construct 函数来调用。并非所有用 C 编写的类都有这个;在 VAPI 文件中,您会找到一些构造函数的 has_construct_function = false。如果是这种情况,则无法进行链式。基础 GObject 可以从参数设置属性,因此这成为在基类中设置默认值的唯一方法。

关于oop - 不支持链接到 'Gtk.Box.new',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29872925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com