作者AIGecko (壁虎猫耳控)
看板Ruby
标题[问题] 继承失败?
时间Sat Feb 2 17:17:19 2013
环境: 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)
1F:推 SansWord:如错误讯息所言,就是要用new而不能用initialize呀。 02/04 07:49
2F:→ AIGecko:怪的点在於其他类别的建构子initialize改引数可正常运作 02/04 13:59
3F:→ AIGecko:连set_color_key继承後也是呼叫SDL::Surface的方法 02/04 14:01
4F:→ AIGecko:话说建构子叫做initialize 产生实体用new应该没错啊= = 02/04 14:03
※ 编辑: AIGecko 来自: 114.36.118.105 (02/04 14:29)