LuaBridge и функции-члены

Я только что скачал 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 делает это без проблем. Что я здесь не так делаю?

4

Решение

Вы должны использовать синтаксис вызова метода

c:MemFunction(10)

Я бы предложил вам использовать более новая версия от GitHub, который имеет обширную документацию. Это также обеспечивает дополнительную гибкость в отношении входных параметров и возвращаемых значений.

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]