2
私はSol2を使ってLuaとC++のコードを橋渡ししています。私はLuaからC++に一連の数値を渡したいと思います。 LuaのからSol2を使ってC++にLUAシーケンスを安全に渡す
:C++で
func{3, 2, 1.5, 10}
:
void func(std::vector<double> v)
{ ... }
C++の関数を呼び出しを接続するための最良の方法は何ですか?
私が直接C++関数にバインドすると、私はsegfaultを取得します。 sol::table
をstd::vector<double>
に変換する関数を書くことができると思いますが、タイプが一致していない場合は例外がスローされますが、これを行う最善の方法やこれが正しい方向であるかどうかはわかりません。手動
/**
* Convert a Lua sequence into a C++ vector
* Throw exception on errors or wrong types
*/
template <typename elementType>
std::vector<elementType> convert_sequence(sol::table t)
{
std::size_t sz = t.size();
std::vector<elementType> res(sz);
for (int i = 1; i <= sz; i++) {
res[i - 1] = t[i];
}
return res;
}
これは各要素一つずつstd::vector
コピーにsol::table
変換する:ここ