所以在经过一番努力之后,我决定尝试一下Luabind。我目前正在解决问题,目前,我最大的问题是返回由lua脚本创建的userdata(类)。这就是我与之合作的例子:
class testclass
{
public:
testclass(const std::string& s) : m_string(s) {}
void print_string() { std::cout << m_string << "\n"; }
private:
std::string m_string;
};
这是我使用Luabind在Lua中注册课程的方式:
module(L)
[
class_<testclass>("testclass")
.def(constructor<const std::string &>())
.def("print_string", &testclass::print_string)
];
这是Lua脚本的内容:
a = testclass('Class created by Lua')
return a
在&#39; a&#39;上调用print_string()在Lua工作完全没问题。然而,之后,当我试图找回“#a”时,我很茫然。从lua堆栈中,然后在我的C ++程序中使用它。我想做的是:
testclass * tmp = (testclass*)lua_touserdata(lua_state, -1);
tmp->print_string();
显然,print_string()是真正被调用的,因为我的输出中有一个换行符,但是,我喜欢tmp-&gt; print_string()&#39;输出由Lua&#34;创建。 如何正确检索从脚本返回的userdata(类)?