作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想向 Lua 公开一些 C++ 类。我可以调用Widget:New()
获取带有元表集的返回用户数据到表 WidgetMeta
. WidgetMeta
包含所有 C++ 函数,它是 __index
设置为自身,所以我可以这样做:
w = Widget:New()
w:Foo() -- Foo is defined in C code
w1 = Widget:New()
w2 = Widget:New()
function w1:Bar() print "Hello!" end -- Both functions unique
function w1:Baz() print "World!" end -- to their own userdata
最佳答案
向用户数据添加一个函数环境,并通过它重定向访问。
这是我的一些描述该过程的旧代码。
static int l_irc_index( lua_State* L )
{
/* object, key */
/* first check the environment */
lua_getfenv( L, -2 );
lua_pushvalue( L, -2 );
lua_rawget( L, -2 );
if( lua_isnoneornil( L, -1 ) == 0 )
{
return 1;
}
lua_pop( L, 2 );
/* second check the metatable */
lua_getmetatable( L, -2 );
lua_pushvalue( L, -2 );
lua_rawget( L, -2 );
/* nil or otherwise, we return here */
return 1;
}
static int l_irc_newindex( lua_State* L )
{
/* object, key, value */
lua_getfenv( L, -3 );
lua_pushvalue( L, -3 );
lua_pushvalue( L, -3 );
lua_rawset( L, -3 );
return 0;
}
关于lua - 将 userdate 视为 Lua 中的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3332448/
我想向 Lua 公开一些 C++ 类。我可以调用Widget:New()获取带有元表集的返回用户数据到表 WidgetMeta . WidgetMeta包含所有 C++ 函数,它是 __index设置
我是一名优秀的程序员,十分优秀!