LuaBridge icon indicating copy to clipboard operation
LuaBridge copied to clipboard

Sorry for asking here, can you reply me?

Open ryuj-h opened this issue 4 years ago • 3 comments

https://stackoverflow.com/questions/67685270/how-to-pass-lua-table-to-the-c-class-constructor-using-luabridge

ryuj-h avatar May 25 '21 09:05 ryuj-h

class MyObjectClass { public: MyObjectClass(lua_State* L/How to passed lua table here?/) { luabridge::LuaRef param = luabridge::LuaRef::fromStack(L, 2); if (param.isTable()) { cout << param[1] << endl; //... } } };

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

solved..

ryuj-h avatar May 25 '21 10:05 ryuj-h

You can also pass luabridge::LuaRef to the constructor. One line less.

dmitry-t avatar May 25 '21 11:05 dmitry-t

c++

class MyObjectClass
{
public:
	MyObjectClass(lua_State* L)
	{
		LuaRef param = LuaRef::fromStack(L, 2);
		if (param.isTable())
		{
			LuaRef num1 = param.rawget("num1");
			LuaRef num2 = param.rawget("num2");
			LuaRef num3 = param.rawget("num3");
			LuaRef num4 = param.rawget("num4");

			cout << num1 << endl;
			cout << num2 << endl;
			cout << (int)num3 << endl;
			cout << (int)num4 << endl;
		}
	}
	void printmynum()
	{
		cout << "HELLO" << endl;
	}
};


L = luaL_newstate();//lua_open();
luaL_openlibs(L);

getGlobalNamespace(L)
	.beginClass<MyObjectClass>("MyObjectClass")
	.addConstructor<void (*)(lua_State*)>()
	.addFunction("printmynum", &MyObjectClass::printmynum)
	.endClass();

lua
object1 = MyObjectClass({num1 = 9999,num2 =11244,num3 =643642534,num4 =734547});
object2 = MyObjectClass({num1 = 9999,num2 =11244,num3 =643642534,num4 =734547});
object3 = MyObjectClass({num1 = 9999,num2 =11244,num3 =643642534,num4 =734547});
object4 = MyObjectClass({num1 = 9999,num2 =11244,num3 =643642534,num4 =734547});

object1:printmynum();
object2:printmynum();
object3:printmynum();
object4:printmynum();

This code make crash with error

"Lua error: ...s--------------------------------\hellolua.lua:10: attempt to call a nil value (method 'printmynum') PANIC: unprotected error in call to Lua API (attempt to call a nil value)"

Do you know what I missed?

ryuj-h avatar May 25 '21 15:05 ryuj-h