无法链接到需要参数的基础构造函数

时间:2012-09-19 21:07:28

标签: oop sdl vala sdl-ttf

public class Font : SDLTTF.Font {
    public Font (string _filename, int _size) {

    }

    public void draw () {

    }
}

这是我的代码。当我尝试构建它时,我得到:

Font.vala:4.5-4.15: error: unable to chain up to base constructor requiring arguments
    public Font (string _filename, int _size) {
    ^^^^^^^^^^^
Compilation failed: 1 error(s), 0 warning(s)

我以为我需要覆盖构造函数,所以我尝试public override它,但现在我得到了:

Font.vala:4.5-4.24: error: abstract, virtual, and override modifiers are not applicable to creation methods
    public override Font (string _filename, int _size) {
    ^^^^^^^^^^^^^^^^^^^^
Compilation failed: 1 error(s), 0 warning(s)

有关如何解决此问题的任何想法?我正在尝试继承SDLTTF.Font类。

2 个答案:

答案 0 :(得分:3)

你有没有尝试过

base(_filename, _size);

在你的构造函数中?

修改: 这对我有用。但请注意,SDLTTF.Font在vapi中定义为紧凑类,这意味着当您派生它时,您只能为子类定义新函数,但不允许实例数据(成员变量等)。如果你需要这个,我建议你使用apmasell的建议并创建一个派生自(G)Object的包装类。

答案 1 :(得分:3)

SDLTTF不由GObject管理,因此Vala无法创建派生类。如果Vala使用GObject,Vala只能创建派生类,这在GLib,GTK +,Pango,ATK和许多GNOME库中是典型的。

根据您的目的,您可以创建一个包含SDLTFF.Font实例的新类,并代理相应的请求。