[問題] 繼承失敗?

看板Ruby作者 (壁虎貓耳控)時間11年前 (2013/02/02 17:17), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/1
環境: Ruby 1.9.3 Ruby/SDL 2.1.1.1 狀況: 想要把SDL的Surface再包裝一層 於是使用了繼承 class Surface < SDL::Surface def initialize(w,h,format) super(SDL::SWSURFACE,w,h,format) end def self.flag SDL::SWSURFACE end end 所以呼叫時就改成 surface=Surface.new(w,h,format) 沒想到錯誤提示卻跑出來 (應該是沒有繼承到?) must be SDL::Surface.new(flags,w,h,surface) or SDL::Surface.new(flags,w,h,depth,Rmask,Gmask,Bmask,Amask) (ArgumentError) 繼承的那一段本來是程式一開始就有 後來改到SDL初始化後也沒用 其他類別的繼承也沒這種問題 我也沒拼錯字啊... (我其他的類別也有改建構子的參數 沒問題 這個就不行= =) 目前只好使用Surface.new(Surface.flag,w,h,format) 那個flag呼叫倒是很正確... -- CPU: Athlon XP 1800+ RAM: DDR400 1GB+256MB MB: A7S266U2-VM/U2 硬碟:IDE 40G*3 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.167.244.224 ※ 編輯: AIGecko 來自: 118.167.244.224 (02/02 18:08)

02/04 07:49, , 1F
如錯誤訊息所言,就是要用new而不能用initialize呀。
02/04 07:49, 1F

02/04 13:59, , 2F
怪的點在於其他類別的建構子initialize改引數可正常運作
02/04 13:59, 2F

02/04 14:01, , 3F
連set_color_key繼承後也是呼叫SDL::Surface的方法
02/04 14:01, 3F

02/04 14:03, , 4F
話說建構子叫做initialize 產生實體用new應該沒錯啊= =
02/04 14:03, 4F
※ 編輯: AIGecko 來自: 114.36.118.105 (02/04 14:29)
文章代碼(AID): #1H3DclEM (Ruby)
文章代碼(AID): #1H3DclEM (Ruby)