2012-09-19 66 views
1
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類。

回答

3

你有沒有試圖把

base(_filename, _size); 

在你的構造?

編輯: 這對我有效。但是請注意,SDLTTF.Font在vapi中定義爲一個緊湊類,這意味着當您派生它時,只允許爲您的子類定義新函數,但不允許實例數據(成員變量等)。如果你需要這個,我建議你用apmasell的建議去創建一個從(G)Object派生的包裝類。

3

SDLTTF不由GObject管理,因此Vala無法創建派生類。 Vala只能使用GObject創建派生類,如GLib,GTK +,Pango,ATK和許多GNOME庫中的典型代碼。

根據您想要做什麼,您可以創建一個包含SDLTFF.Font實例的新類並代理相應的請求。

相關問題