2

这里有人可以帮助我使用 tolua++ 和 __tostring 吗?

如果我尝试在从 C++ 对象绑定的 Lua 对象的元表上设置 __tostring 属性,我会崩溃。

例如

local x = foo.new() -- foo bound from tolua++
getmetatable(x).__tostring = function(t) end

...导致崩溃。

似乎设置已经存在的元表函数,如 __eq,是可以的......而设置一个尚不存在的函数,如 __tostring 或 'foobar' 会导致崩溃。

4

1 回答 1

0

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

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

此外,我可以毫无问题地替换 Lua 端的函数(例如使用 getmetatable(foo).__tostring = somenewfunction)。

如果 __tostring 函数未明确绑定 usi,我仍然想知道为什么会发生崩溃

于 2013-03-03T20:51:31.627 回答