Lua使用C++中的类——调用类方法并访问类变量

Lua使用C++中的类——调用类方法并访问类变量
xxNull 2013-04-18 11:21

{
lua_pushnumber(L, pT->m_x); 
}
else if (strcmp(lua_tostring(L, 2), "Add") == 0)
{
lua_pushcfunction(L, CallAdd);
}
else
{
return 0;
}
return 1;
}

static int lua_newindex(lua_State* L)
{
CTest* pT = *(CTest**)lua_topointer(L, 1);

if (strcmp(lua_tostring(L, 2), "m_x") == 0)
{
pT->m_x = (int)lua_tonumber(L, 3);
}
return 0;
}

int main(int argc, char * argv[])
{
lua_State *L = lua_open();
luaopen_base(L); 

// 往lua中注册类
lua_pushcfunction(L, CreateCTest); // 注册用于创建类的全局函数
lua_setglobal(L, "CTest");

luaL_newmetatable(L, "CTest"); // 创建一个元表

lua_pushstring(L, "__gc"); // 垃圾回收
lua_pushcfunction(L, DestoryCTest);
lua_settable(L, -3); // 公共函数调用的实现就在此啊

lua_pushstring(L, "__index");
lua_pushcfunction(L, lua_index);
lua_settable(L, -3);

lua_pushstring(L, "__newindex");
lua_pushcfunction(L, lua_newindex);
lua_settable(L, -3);

lua_pop(L,1);

luaL_dofile(L, "LuaUseClass.lua"); 

lua_close(L);
}

makefile

CPPFLAG=`pkg-config --cflags lua5.1` LDFLAG=`pkg-config --libs lua5.1` CC=g++ all: LuaUseClass LuaUseClass : LuaUseClass.cpp $(CC) -o $@ $(CPPFLAG) $(LDFLAG) $<

测试环境
OS:Ubuntu 11.04
Lua:5.1.4

运行结果:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值