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类。
答案 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实例的新类,并代理相应的请求。