2016-03-28 9 views
3

Ich versuche, Funktionszeiger in DLang (Zeiger auf Funktion) zu verwenden, aber es wird nicht kompilieren. Der ganze Code auf dem Web, wenn Funktionszeiger gemacht werden, funktioniert nicht für mich. Das ist mein Code:D2: Funktion Zeiger werden nicht kompiliert

tqvar function(tqlist)[string] procs; 
procs["divide"] = ÷/// cannot implicitly convert expression (&this.divide) of type tqvar delegate(tqlist args) to tqvar function(tqlist) (QScript) 
tqvar divide(tqlist args){ 
    tqvar result; 
    result.ii = true; 
    result.d = args.read(0).d/args.read(1).d; 
    return result; 
}; 

Ich benutze dmd2, auf ubuntu.

+0

[Works] (http://dpaste.dzfl.pl/d21fd09780db) für mich. – sigod

Antwort

6

divide ist offenbar ein Delegat, keine Funktion. Sie können stattdessen entweder eine Delegiertenliste verwenden (ersetzen Sie einfach function durch delegate) oder stellen Sie sicher, dass Ihre Funktion kein Delegierter ist.

Für letzteres: es sieht aus wie Divide ist eine Klassenmethode, keine einfache Funktion. Entweder es static machen oder es außerhalb des Klassenkörpers bewegen.

Verwandte Themen