constructors

BlitzMax Forums/BlitzMax Programming/constructors

does anyone know how to use constructors in BMax

i know how to use New as a method but i want to make multiple ones or pass variables into the method

I don't think there are real constructors in bmax. you just add functions like the one below to the type.

	Function Create:SpriteFrame(frame:Int,nextSpeed:Long,prevSpeed:Long)
		Local m:SpriteFrame = New SpriteFrame
		m.frame = frame
		m.nextSpeed = nextSpeed
		m.prevSpeed = prevSpeed
		Return m
	End Function


Well, there is that other method too ;)
Type TList
  Method Create:TList()
    Return Self
  EndMethod
EndType

Local list:TList = New TList.Create()


Easiest way for constructor:

Type TTest
   field x:int, y:int

   Method Create:TTest(x:int, y:int)
      self.x = x
      self.y = y
      return self
   end method
end type

global Test:TTest = new TTest.Create(10,10)
' or for making sure you will never have precedence problems:
' global Test:TTest = (new TTest).Create(10,10)


You are all nuts using that "New TWhatever.Create()" method instead of the function as Scott Shaver has posted. Uh that's just my 2 cents. Also way to confuse link1426.

you can also override the New() method..

@Grable & Dreamora

That had never occured to me before. I prefer this form to the Function alternative (which I'de been using previously.)

You are all nuts using that "New TWhatever.Create()" method instead of the function as Scott Shaver has posted. Uh that's just my 2 cents. Also way to confuse link1426.

I qite agree. A member function create is a lot more sensible than a member method create. AND is has the bonus that the new is inside the function (well can be)
BUT my member function Create just calls a member method allocate

thank you and i will use th function way instead of a method

now i gotta redo some code, what a pain in the arse