luabridgeを使用して、あるLua_Stateから別のLua_Stateに関数をコピーしたいとします。関数ポインタとしてのラムダの可変引数
luabridgeにはaddFunction(const char * name,FP fp)
というファンクションがあり、getGlobal(lua_State* L,const char*)
というファンクションは、オーバーロードされた演算子を持つタイプLuaRef
のオブジェクトを戻します。私はマルチマップを使用して、コピーしたい機能の名前を保存しています。
機能addFunction()
したがって、私は何とかラムダはaddFunction()
から複数の引数を受け入れることはできますgetGlobal().operator()
直接
//get all functions that match the Criteria
std::pair<acc_map_iter, acc_map_iter> range = sec_map->equal_range(acl);
//Add them to the first State
std::for_each(range.first, range.second, [&](acc_map_iter iter){
script->compilerContext->addFunction(iter->second.c_str(), [&](/*args...?*/)
{
return luabridge::getGlobal(sec_state, iter->second.c_str()).operator(/*args...?*/);
});
});
を渡すことはできません、クラスへのポインタの使用をサポートしていません。トリックはありますか、それとも単純に不可能ですか?
あなたの質問は少し難しいですが、おそらく 'std :: bind()'を使うことができますか? –
申し訳ありませんが、これはかなり奇妙な質問だと思います。可変量の議論を通過するように支援を結びつけるだろうか? – Raphl10