【问题标题】:How to module programming in luabind( OOP, object-oriented programming)如何在 luabind 中进行模块编程(OOP,面向对象编程)
【发布时间】:2018-04-20 06:52:36
【问题描述】:

使用“require”,我想链接一个表示基类的lua文件。

lua_class1.lua(基类)

   class 'lua_testclass'

    function lua_testclass:__init()
        self.name = name
    end

    function lua_testclass:f(Value)
        Value[1] = 10000
    end

"lua_test1.lua(派生类)"

   require "lua_class1"

    class 'lua_testclass_wrapper' (lua_testclass)

    function lua_testclass_wrapper:__init()
        lua_testclass.__init(self, name)
    end

    function lua_testclass_wrapper:f(Value)
        lua_testclass.f(self, Value)
    end

    a = lua_testclass('example')
    b = lua_testclass_wrapper('example')

cpp 文件引用了一个全局对象“a”并且“a”对象调用“f”成员函数。但是,程序异常终止。

luaL_dofile(pLS, "lua_test1.lua");
object objParam = newtable(pLS);
object obja = globals(pLS)["a"];
objParam[1] = 10;
call_member<void>(obja, "f", objParam);
int nParam = object_cast<int>(objParam[1]);

顺便说一句,下面的就OK了..

class 'lua_testclass'

function lua_testclass:__init()
    self.name = name
end

function lua_testclass:f(Value)
    Value[1] = 10000
end


class 'lua_testclass_wrapper' (lua_testclass)

function lua_testclass_wrapper:__init()
    lua_testclass.__init(self, name)
end

function lua_testclass_wrapper:f(Value)
    lua_testclass.f(self, Value)
end


a = lua_testclass('example')
b = lua_testclass_wrapper('example')

我试过这个方法,但是失败了。

Mod = require "lua_class1"

class 'lua_testclass_wrapper' (Mod.lua_testclass)

    function lua_testclass_wrapper:__init()
        Mod.lua_testclass.__init(self, name)
    end

    function lua_testclass_wrapper:f(Value)
        Mod.lua_testclass.f(self, Value)
    end

有什么好办法吗?

谢谢。

【问题讨论】:

标签: c++ lua


【解决方案1】:

我以多种方式测试了这个案例。我包含了基类 lua 文件(“lua_class1.lua”)。 然后,它工作得很好。 我想知道这个来源是如何工作的。

luaL_dofile(pLS, "lua_class1.lua"); //include base class file
luaL_dofile(pLS, "lua_test1.lua"); 
object objParam = newtable(pLS);
object obja = globals(pLS)["a"];
objParam[1] = 10;
call_member<void>(obja, "f", objParam);
int nParam = object_cast<int>(objParam[1]);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 2010-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    相关资源
    最近更新 更多