Luabind - 从脚本返回userdata

时间:2015-07-10 21:19:20

标签: c++ lua luabind

所以在经过一番努力之后,我决定尝试一下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(类)?

0 个答案:

没有答案