游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3103|回复: 5

一个LUA面向对象的问题,LUA中调用C++已有对象

[复制链接]

97

主题

590

帖子

590

积分

高级会员

Rank: 4

积分
590
QQ
发表于 2008-4-14 18:34:00 | 显示全部楼层 |阅读模式
想实现:
c++;
Kid kid;
kid.value=1;
lua_pushuserdata(L,&kid);
lua_setglobal(L,"gkid");

lua:
local kid=gkid
print(kid.value)

我用的是tolua++,已经实现往lua中注册对象,有命名控件:
local kid=MyNameSpace.Kid:new()
kid.value=1

如果用lua_pushlightuserdata只传递对象指针给Lua,在Lua中是无法调用对象方法的,是能作为一种参数

10

主题

173

帖子

178

积分

注册会员

Rank: 2

积分
178
发表于 2008-4-14 22:26:00 | 显示全部楼层

Re:一个LUA面向对象的问题,LUA中调用C++已有对象

tolua++其胶合代码已经帮你实现向lua注册类了,好像直接在lua中就可以访问那个类了阿。

97

主题

590

帖子

590

积分

高级会员

Rank: 4

积分
590
QQ
 楼主| 发表于 2008-4-15 09:13:00 | 显示全部楼层

Re:一个LUA面向对象的问题,LUA中调用C++已有对象

是的,已经注册类了,我也能访问了,但如果从lua中访问C++的那个已存在用户类呢?
总不见得把数据成员一个个push到lua全局栈中吧

97

主题

590

帖子

590

积分

高级会员

Rank: 4

积分
590
QQ
 楼主| 发表于 2008-4-15 10:19:00 | 显示全部楼层

Re:一个LUA面向对象的问题,LUA中调用C++已有对象

已自己解决,用tolua_pushusertype

5

主题

41

帖子

169

积分

注册会员

Rank: 2

积分
169
发表于 2008-4-15 12:10:00 | 显示全部楼层

Re: 一个LUA面向对象的问题,LUA中调用C++已有对象

你那样做是对的,只是你要保证"kid"是全局变量,要不然会出错的.
[em1] [em1]

1

主题

23

帖子

23

积分

注册会员

Rank: 2

积分
23
发表于 2008-4-15 12:13:00 | 显示全部楼层

Re:一个LUA面向对象的问题,LUA中调用C++已有对象

可以将对象指针强制转换为int型进行指针传递
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 20:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表