![]() |
1
10
我花了很多时间来让Lua在C++课程中工作得很好。Lua比C++更像是一种C风格的API,但是有很多方法可以与C++一起使用。
为了首先向Lua公开这一点,我将为所有符合Lua函数原型的方法编写包装函数,该原型将Lua状态作为参数,并返回一个int,表示它推送到堆栈上的值的数目(通常为1或0)。 这些函数中最棘手的是构造函数,它将返回一个类似于对象的Lua表。为此,lua\u newuserdata用于创建指向对象指针的指针。我将假设我们将在Lua init期间创建一个包含这些c函数的元表“Person”。此元表必须与构造函数中的用户数据相关联。
最后在Lua初始化过程中使用luaL\u寄存器建立Person元表。
为了测试它。。。
在Lua中实现OO还有其他方法。本文介绍了替代方案: http://loadcode.blogspot.com/2007/02/wrapping-c-classes-in-lua.html |
![]() |
2
4
请参阅Lua用户wiki上关于 binding code to Lua . 有几种技术可以使C++对象从篱笆的Lua侧起作用,其复杂性在于,让LUA持有一个不能直接使用的不透明指针,从而完全暴露了所有C++方法,甚至允许用Lua编写的方法扩展对象。 对于用C编写的简单函数库,使用luaapi在Lua堆栈和库函数之间移动,手工编写自己的绑定是相当容易的。 对于一个基于对象的系统来说,手工完成的工作要多得多,因此该页面上列出的其中一个绑定工具将使您的工作更加轻松。 |
![]() |
3
2
我不确定这是不是你要找的,但你试过了吗 luabind ? 也许 吧 this question 也有帮助。 |
![]() |
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 6 月前 |
![]() |
Anka Hanım · 关于结构和动态数组地址的问题 6 月前 |
![]() |
tTt · 使用堆栈中的值重新分配指针 7 月前 |
![]() |
manuel · 现代C中空指针的替代方案++ 8 月前 |