function pointer

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

beanage.johannes

Betreff: function pointer

BeitragMo, Nov 09, 2009 0:01
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo freunde der nacht Wink
ich habe versucht (vergeblch) function pinter in einen array zu drücken. aber irgendwas will da nicht (suche habe ich benutz aber nichts gefunden)
Code: [AUSKLAPPEN]

Function f1:String(str:String)

   Return str:String

EndFunction

Function f2:Int(num:Int)

   Return num:Int

EndFunction

Global array[2]

Local f1p:String(str:String)
f1p = f1

Local f2p:Int(num:Int)
f2p = f2

array[0] = f1p
array[1] = f2p

i:Int = Int(Input(":"))

Print array[i] (Int(9))


danke

Jolinah

BeitragMo, Nov 09, 2009 0:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo

Meines Wissens die einzige Möglichkeit Funktionszeiger unterschiedlicher Signatur in ein Array zu bringen ist es sie in Byte Ptr bzw. Int zu casten und umgekehrt wieder in den entsprechenden Funktionszeiger zu konvertieren:

Code: [AUSKLAPPEN]
Global array:Byte Ptr[2]

array[0] = Byte Ptr(f1)
array[1] = Byte Ptr(f2)

Local i:Int = Int(Input(":"))

Local myfunc1:String(str:String) = array[0]
Print myfunc1(i)

Local myfunc2:Int(num:Int) = array[1]
Print myfunc2(i)


Wenn sie aber die gleiche Signatur haben kann man sowas machen:

Code: [AUSKLAPPEN]
Function f1:Int(num:Int)

   Return num + 1

EndFunction

Function f2:Int(num:Int)

   Return num - 1

EndFunction

Global array:Int(num:Int)[2]

array[0] = f1
array[1] = f2

Print array[0](1)
Print array[1](1)

beanage.johannes

BeitragMo, Nov 09, 2009 0:31
Antworten mit Zitat
Benutzer-Profile anzeigen
danke

BtbN

BeitragMo, Nov 09, 2009 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Und gewöhn dir an, deinen Code SuperStrict zu schreiben. Damit hättest du eine passende fehlermeldung erhalten.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group