Closed moozen-cn closed 6 years ago
呃 不是这个意思,你说的这些我在XXX.lua.h 文件看到了,然后注册到lua了
function CppObjectBase:NewCpp(...)
if not rawget(self, "_meta_") then
error("not class")
end
return self._cppclass.New(...)
end
这里的self._cppclass就是C++注册到lua的类名吧,该怎么赋值呢
应该是我理解错了,我并不想完全包装一个C++类,不用继承自CppObjectBase 只想普通使用lua模拟类的功能,继承ObjectBase就行了
这应该是遗留代码,不能直接调用cppobjectbase的NewCpp了,以前每个cppobjectbase声明的时候需要指定特定的c++类,所以才有_cppclass这个变量存储了对应的c++类,但我发现这样并不方便,所以改成现在的形式。
现在是可以多个c++类使用同一个lua类,就是说在c++类里的构造方法调用LuaCtor,这样在lua里拿到这个c++类的实例的时候,就会获得它对应的lua实例,相当于lua继承于该c++类,可以重载该c++类的方法,增加lua方法和lua成员变量。
如果是纯lua的面向对象,像你所说,继承自objectbase就行。
不过这套面向对象的机制是设计得比较严格的,跟我整个框架互相关联,包括很恶心的GC,还有Debugger的一些实现,如果有什么不满意,建议先理解清楚,按照自己的业务去改。
这是简单的关于luaclass的文档https://github.com/asqbtcupid/unreal.lua/wiki/luaclass
好的 谢谢
继承自SimpleDlg在NewCpp就创建成功了 请问可以继承CppObjectBase么,那为什么不能创建?