Method-Pointer [gelöst]

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Noa

Betreff: Method-Pointer [gelöst]

BeitragFr, Aug 03, 2007 10:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo allerseits,

ich hab' ein Problem.
In meinem Projekt arbeite ich mit Function-Pointern wie in diesem Tutorial (https://www.blitzforum.de/forum/viewtopic.php?t=11449&highlight=pointer+method) beschrieben. Allerdings wird hier gesagt "Einzige Einschränkung ist in BMax das man nicht eine Methode einer Instanz referenzieren kann. Statische Funktionen jedoch schon."
Genau hier liegt das Problem. Um mein Projekt fortsetzen zu können, benötige ich Pointer auf Instanz-Methoden. Meine Frage also: Gibt es eine Möglichkeit die interne Sperre dafür zu umgehen bzw. einen Alternativweg um einen Pointer auf eine Instanz-Funktion zu erhalten?

Im Voraus, danke für die Mühe
  • Zuletzt bearbeitet von Noa am Fr, Aug 03, 2007 11:35, insgesamt einmal bearbeitet
 

Dreamora

BeitragFr, Aug 03, 2007 11:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Es gibt keine Method Pointer.
Das würde man dann auch nicht so nennen, sondern Delegate oder ähnlich.

Es wird allerdings in Zukunft möglich werden, wenn Mark "Reflection" in BM integriert hat.
Heisst aber auch, dass es wie Delegates etc einen Overhead hat und nicht ganz so schnell ist.

Für den Moment musst du Wrapperfunktionen schreiben.
Sprich

Code: [AUSKLAPPEN]

SuperStrict

Type TTest


   function wrapPointer(instance:TTest)
      instance.doSomething()
   end function

   method doSomething()
      print "siehste, so gehts ;-)"
   end method
End Type


local someFun(instance:TTest)

local elem:TTest = new TTest
someFun = TTest.wrapPointer

someFun(elem)

delay(1000)
end


Ich nutz diesen Ansatz in meinem Code auch allerdings genau umgekehrt.
Ich brauche function pointer auf objekten um dynamisch eventHandler zuzuweisen.
Diese werden dann in einer Methode aufgerufen.
Sprich geht in beide Richtungen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Noa

BeitragFr, Aug 03, 2007 11:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank, hat mir sehr geholfen ^^ - Der Weg ist zwar umständlicher aber besser, als wenn es gar nicht funktionieren würde ^^"

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group