Ich möchte eine Funktion von einem Lua_State zu einem anderen mit Luabridge kopieren.Variable Argumente in Lambda als Funktionszeiger
luabridge bietet eine Funktion namens addFunction(const char * name,FP fp)
und eine Funktion namens getGlobal(lua_State* L,const char*)
, die ein Objekt vom Typ LuaRef
zurückgibt, das Operatoren überladen hat. Ich verwende eine Multimap, um die Namen der Funktionen zu speichern, die ich kopieren möchte.
die Funktion addFunction()
nicht die Verwendung eines Zeiger auf eine Klasse unterstützen, damit ich nicht getGlobal().operator()
direkt
//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...?*/);
});
});
Kann ich irgendwie das Lambda mehr Argumente von addFunction()
akzeptieren passieren kann. Gibt es einen Trick oder ist es einfach unmöglich?
Ihre Frage ist ein bisschen schwer zu folgen, aber vielleicht können Sie 'std :: bind()'? –
Tut mir leid, ich denke, das ist eine ziemlich merkwürdige Frage. würde Unterstützung binden, um eine variable Anzahl von Argumenten zu durchlaufen? – Raphl10