Problems with Abstract Type's New Method overload

Monkey Forums/Monkey Programming/Problems with Abstract Type's New Method overload

Shinkiro1(Posted 2011) [#1]
Class SpriteLogic Abstract
	
	Field spritePtr:Sprite
	
	Method New (sprite:Sprite)
		spritePtr = sprite
		OnInit()
	End
	
	Method New()
		Error ("SpriteLogic.New: Extended classes of SpriteLogic require a Sprite as an argument.")
	End
	
	Method OnInit:Void() Abstract
	Method Update:Void() Abstract
	Method OnEvent:Void (id:Int) Abstract
End



Class CommonLogic Extends SpriteLogic
		
	Method OnInit:Void()
	End
	
	Method Update:Void()
	End
	
	Method OnEvent:Void (id:Int)
	End
	
End


I want it so that all Classes extending from SpriteLogic have to use the New(sprite) Method.
But if i now try to call:
New CommonLogic(someSprite)

the compiler fails: Unable to find overload for new(Sprite).
If I just call New() it will throw my error as expected.

Is this not allowed?
There is nothing in the docs(language reference) about Abstract.


Samah(Posted 2011) [#2]
Nope, monkey will always generate a default constructor and will call it by default if you don't manually call one. This is a problem I've been complaining about to Mark for months with no response.

Edit: Sorry I DID get a response, but I don't think it was really an acceptable one... >_>
<3 Mark


Shinkiro1(Posted 2011) [#3]
Ok thanks, will work around it then.


Samah(Posted 2011) [#4]
Ok thanks, will work around it then.

If you look in the diddy GUI you'll see a lot of:
Method New()
	NoParent()
End

Which calls:
Function NoParent:Void()
	AssertError("Must pass a parent component.")
End