IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    传Lua对象到Cpp

    金庆发表于 2016-07-19 08:09:00
    love 0
    传Lua对象到Cpp

    (金庆的专栏)

    摘自:http://raycast.net/lua-intf

    以下代码演示了Lua函数和表传入Cpp进行处理:

    std::string acceptStuff(LuaRef luaObj,
        const std::vector<std::string>& stringVector,
        std::map<std::string, int>& dict)
    {
        // Assume that this function expects Lua object (table) as first argument
        auto func = luaObj.get<std::function<std::string(int)>>("func");
        auto stringField = luaObj.get<std::string>("str");
        std::ostringstream s;
        s << "func() result: " << func(10) << ", string field value: " << stringField << "\n";
        s << "Vector size: " << stringVector.size() << ", first element: " << stringVector[0] << "\n";
        s << "Dictionary size: " << dict.size() << ", first element: (" <<
            dict.begin()->first << ", " << dict.begin()->second << ")";
        return s.str();
    }

    LuaBinding(lua).beginModule("test")
        .addFunction("acceptStuff", &acceptStuff)
    .endModule();

    // Lua
    local obj = {
        func = function(i)
            return "You passed number " .. i
        end,
        str = "Hello, world"
    }
    local v = { 1, 2, 3 }
    local dict = { first = 1, second = 2 }
    print(test.acceptStuff(obj, v, dict))

    // Output
    func() result: You passed number 10, string field value: Hello, world
    Vector size: 3, first element: 1
    Dictionary size: 2, first element: (first, 1)


    金庆 2016-07-19 16:09 发表评论


沪ICP备19023445号-2号
友情链接