Ich bekomme einen Verweis auf eine Lua-Methode, die innerhalb einer Klasse mit der Funktion LuaL_ref ist. Wenn ich diese Methode aufrufen möchte, verwende ich die Funktion lua_rawgeti, um die Funktion in den Stapel zu schieben, und dann lua_pcall, um die Methode tatsächlich aufzurufen. Alles funktioniert gut, außer dass ich nicht auf andere Klassenmitglieder zugreifen kann, weil self null ist.Lua: Wie referenziere ich eine Lua-Methode innerhalb einer Lua-Klasse von C für den späteren Gebrauch?
Weiß jemand wie ich das beheben kann?
Vielen Dank!
Wenn jedoch eine Funktion als 'function obj: foo() print (self.property) end' definiert wird, wird der self-Parameter _is_ impliziert. – jpjacobs
Nun, ja, wenn Sie Ihre Funktion als 'Funktionsklasse: Methode (a, b)' definieren, dann hat es tatsächlich drei Parameter - 'self',' a', 'b'. Sie können dem ersten Parameter einen beliebigen Namen geben, indem Sie die Syntax 'function Class.method (this, a, b)' verwenden. Aber das ändert nichts an der Lösung - das Objekt anstelle der Methode referentieren (aber Sie müssen den Methodennamen kennen). Das Aufrufprotokoll soll dann das Objekt als ersten Parameter an die Methode übergeben, gefolgt von dem Rest. –