如何使用luaBridge将lua表传递给C++类构造函数?

这是我想要实现的。

在lua中

object1 = MyObjectClass({1,2,3});

在C++中

class MyObjectClass
{
public:
    MyObjectClass(/*如何在此传递lua表?*/)
    {

    }
    void printmynum()
    {

    }
};

getGlobalNamespace(L)
    .beginClass<MyObjectClass>("MyObjectClass")
    .addConstructor<>()//???
    .addFunction("printmynum",&MyObjectClass::printmynum)
    .endClass();

为我的英语水平不好,我感到抱歉。

我想从MyObjectClass的构造函数中接收lua的表格。

点赞
用户11823790
用户11823790
class MyObjectClass
{
public:
    MyObjectClass(lua_State* L)
    {
        LuaRef param = LuaRef::fromStack(L, 2);
        if (param.isTable())
        {
            cout << param[1] << endl;
        }
    }
    void printmynum()
    {

    }
};

getGlobalNamespace(L)
.beginClass<MyObjectClass>("MyObjectClass")
    .addConstructor<void (*)(lua_State*)>()
    .addFunction("printmynum",&MyObjectClass::printmynum)
    .endClass();
class MyObjectClass // 定义类 MyObjectClass
{
public: // 共有部分
    MyObjectClass(lua_State* L) // 定义构造函数,接收一个 lua_State 指针作为参数
    {
        LuaRef param = LuaRef::fromStack(L, 2); // 获取栈中第二个元素
        if (param.isTable()) // 判断是否是一个表
        {
            cout << param[1] << endl; // 输出表中第一个元素
        }
    }
    void printmynum() // 定义一个无参函数 printmynum
    {

    }
};

getGlobalNamespace(L) // 获取全局命名空间
.beginClass<MyObjectClass>("MyObjectClass") // 声明一个名为 MyObjectClass 的类
    .addConstructor<void (*)(lua_State*)>() // 添加一个无参构造函数
    .addFunction("printmynum",&MyObjectClass::printmynum) // 添加一个将成员函数指针与函数名绑定的函数
    .endClass(); // 结束该类的声明
2021-05-25 10:15:10