Function Pointers
BlitzMax Forums/BlitzMax Programming/Function Pointers
| ||
How do you set up a function pointer then, just to be sure, how do you call the function using the pointer. And you can do this to a function inside a type as well right? |
| ||
Function Test1() Print "Test1!" End Function Type TSomeType Function Test2() Print "Test2!" End Function End Type Local func() 'our function pointer (could global,field...) func=Test1 'set function pointer func 'call function func=TSomeType.Test2 func |
| ||
Function PrintThis:Object() Print "This" End Function Function RunThis(obj:Object()) obj() End Function RunThis(PrintThis) |
| ||
Type TmyType Field Action(Sender:TmyType) Field X:Int Field Y:Int Function Create:TmyType(X:Int, Y:Int, Action(Sender:TmyType)) Local tempType : TmyType = New TmyType tempType.X = X tempType.Y = Y tempType.Action = Action Return tempType End Function End Type Global t:TmyType = TmyType.Create(10, 20, Draw)'note the lack of brackets after Draw Function Draw(Sender:TmyType) DrawRect(Sender.X, Sender.X, 100, 100) End Function Graphics 640,480,0,0 While Not KeyDown(KEY_ESCAPE) Cls t.Action(t) Flip Wend End *EDIT* took too long :) |
| ||
excellent, thanks guys |
| ||
alright, i'm pretty pumped up. Got them on an array now. Question though, when i have agruments for the function, does the pointer function have to have the same number of agruments?Function Agru2( X, Y) Function Agru1(X ) Function Agru0() Func()[3] Func[0] = Agru0 Func[1] = Agru1 Func[2] = Agru2 func[0] func[1](1) func[2](1,2) Not the exact code, but enough to get the idea? I know this doesn't work because i tried it, but idea is there. |
| ||
does the pointer function have to have the same number of agruments? yes. |
| ||
ok, well, i guess all you need is either an agrument type or pointers with an array or something. It'll be nice if it could, but i'll work around it. |
| ||
neat, easy too. |