这里的任何人都可以帮我使用tolua ++和__tostring吗?
如果我尝试在从C ++对象绑定的Lua对象的元表上设置__tostring属性,我会崩溃。
E.g。
local x = foo.new() -- foo bound from tolua++
getmetatable(x).__tostring = function(t) end
......导致崩溃。
似乎设置已存在的metatable函数(如__eq)是正常的......虽然设置一个尚不存在的函数,如__tostring或'foobar'会导致崩溃。
答案 0 :(得分:0)
我想我找到了解决自己问题的方法......
我可以使用tolua从我的C ++基类中绑定一个名为“__tostring”的函数。然后它出现在类metatable上,因此如果打印了该类的对象,则从Lua调用(如预期的那样)。
此外,我可以替换Lua端的函数(例如使用getmetatable(foo).__ tostring = somenewfunction),没有任何问题。
我仍然有兴趣知道为什么如果__tostring函数没有明确绑定usi发生崩溃