gpt4 book ai didi

c++ - LuaBridge 和成员函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:30:21 25 4
gpt4 key购买 nike

我今天刚刚下载了 LuaBridge,到目前为止我对它非常满意。我注意到的一件事是,我能够规避将 lua_State 作为函数参数的正常要求。

我能做到:

//C++ files
void love(int i) {std::cout << i;}

luabridge::getGlobalNamespace(lua)
.addFunction("love", love);

-- Lua file
love(8)

它会工作得很好,但如果我做任何事情会产生以下效果:

//C++ files
struct Tester {
int number;
void MemFunction (int i) { std::cout << i;}
static void Register(lua_State*);
};

void Tester::Register(lua_State *lua) {
luabridge::getGlobalNamespace(lua)
.beginClass<Tester>("Tester")
.addConstructor <void (*) (void)> ()
.addData("number", &Tester::number)
.addFunction("MemFunction", &Tester::MemFunction)
.endClass();
}

--Lua file
c = Tester() -- works...
c.number = 1 -- works...
c.MemFunction(10) -- nothing!

我在文档中读到的任何内容都表明无法注册具有非 lua_State 参数的成员函数,而且我看到一些 LuaBridge 代码可以毫无问题地执行此操作。我在这里做错了什么?

最佳答案

你必须使用方法调用语法

c:MemFunction(10)

我建议您使用 newer version from github ,其中包含大量文档。它还允许在输入参数和返回值方面有一些额外的灵 active 。

关于c++ - LuaBridge 和成员函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13355945/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com