Tolua ++和__tostring

时间:2013-02-23 12:30:56

标签: tolua++

这里的任何人都可以帮我使用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'会导致崩溃。

1 个答案:

答案 0 :(得分:0)

我想我找到了解决自己问题的方法......

我可以使用tolua从我的C ++基类中绑定一个名为“__tostring”的函数。然后它出现在类metatable上,因此如果打印了该类的对象,则从Lua调用(如预期的那样)。

此外,我可以替换Lua端的函数(例如使用getmetatable(foo).__ tostring = somenewfunction),没有任何问题。

我仍然有兴趣知道为什么如果__tostring函数没有明确绑定usi发生崩溃