2016-11-23 4 views
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::tablestd::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変換する:ここ

答えて

0

一の解決策です。テーブル内の要素の型が間違っていたり、欠けている要素がある場合はエラーとなります。

関連する問題