我想从Lua代码调用一些C ++函数并在参数中传递Lua表,如下所示:
call_cpp_function_from_lua({ x = 10, y = 20 })
在call_cpp_function_from_lua
中我想得到并使用迭代器来表示Lua表的C ++表示,如下所示:
std::map<boost::variant<LuaTypesList>, boost::variant<LuaTypesList>>::iterator it = getLuaTableBegin();
我可以使用C API来执行此操作,但这很容易出错,请参阅Iterating through a Lua table from C++?。
答案 0 :(得分:1)
QtLua library为Lua表实现C ++迭代器。它有Value::iterator
和Value::const_iterator
类,允许迭代Lua表。以下是如何使用它们的简短示例:
// code from examples/cpp/value/iterate.cc:32
QtLua::State state;
// New lua table value
state.exec_statements("table = { a = 1, b = 2, c = 3 }");
QtLua::Value table = state["table"];
// Iterate over lua table from C++ code
for (QtLua::Value::const_iterator i = table.begin(); i != table.end(); i++)
qDebug() << i.key().to_string_p()
<< i.value().to_string_p();