草庐IT

c++ - 函数需要抽象类型 A 的 C++ 对象。如何将 A 子类的 Lua 对象传递给它?

我想将派生自纯虚拟C++类的类的Lua对象传递给需要纯虚拟类的C++对象的函数。我该怎么做?我是lua和luabind的新手,请耐心等待。在C++中:structA{virtualvoidfoo()=0;};voiddo_something(A*a){a->foo();}在Lua中:class'MyA'(A)....functionMyA:foo()print('hi')end再次在C++中:...//somehowcreateaninstanceofMyAclassandnamedmyA//How?//Maybetheresultofacallto"MyA()"?do_somethi

c++ - 如何从 C++ 读取 Lua 表返回值

我有一个返回表(包含字符串集)的Lua函数该函数使用此代码运行良好:lua_pushstring(lua,"funcname");lua_gettable(lua,LUA_GLOBALSINDEX);lua_pushstring(lua,"someparam");lua_pcall(lua,1,1,0);该函数返回一个表。我如何从我的C++代码中读取它的内容? 最佳答案 如果你问如何遍历结果表,你需要lua_next(该链接还包含一个示例)。正如egarcia所说,如果lua_pcall返回0,则可以在堆栈顶部找到函数返回的表。

navigator.pop()在回调函数表单redux Action

我正在实现一个小应用程序,需要在Firebase中插入一些数据,然后在数据插入完成后从堆栈中弹出屏幕。我现在正在调用操作,并通过插入数据后执行的回调函数,下面我的代码:implyeecreate.jsonButtonPress(){const{name,phone,shift,navigator}=this.props;this.props.employeeCreate({name,phone,shift:shift||'Monday'},()=>{console.log('REDIRECTFUNCTIONHERE');navigator.pop({animated:true,//doesth

c++ - 如何替换 Lua 默认错误打印?

我正在将Lua作为脚本语言实现到Windows应用程序中。由于应用程序的结构,打印输出未使用流式io,例如stdout和stderror。我已经设法覆盖Luaprint以适应我的结构...lua_register(L,"print",cs_print);...但是如何在不使用流的情况下覆盖所有错误和调试打印输出?我需要在一个函数中处理它(类似于print)。 最佳答案 Lua写入stderr的唯一地方是在luaL_newstate的panic函数中。安装。如果您将Lua嵌入到您的应用程序中,请确保您从protected调用中启动Lu

c++ - 为什么 std::set 中的项目不能为 'popped' ?

我知道std::set不允许非常量访问它的项。我知道不可能将项目移出集合——因为任何类型的非常量访问都可能破坏集合的顺序。但是,我们可以从集合中删除一个项目。这不会破坏它,因为它只是迫使集合进行重组。那么为什么我们不能“弹出”一个项目呢?为什么我不能取出项目并同时将其删除?我问的原因是-我需要一个有序的unique_ptrs容器。有时我需要从一个容器中“弹出”unique_ptr并将它们转移到另一个容器中。它们必须是我制作的自定义仿函数。我不明白为什么不允许弹出功能? 最佳答案 要从std::set中提取节点,您可以使用extrac

c++ - lua - 类析构函数的延迟调用

我正在开发一个基本上只执行lua脚本的C++程序。然而,在该lua脚本中构造了类,这些类已从我的c++程序导出到lua脚本。我的main()c++函数只是在一些准备之后调用...luabind::call_function(m_L,"main");现在我的lua脚本是这样的localfunctiontest()localc=C()endfunctionmain()fori=1,2dolog(i)test()endend我包含了一个std::cout12destructordestructor而不是1destructor2destructor有人知道这是为什么吗?我在这里遗漏了什么吗?

c++ - 如何使用静态 C++ 库扩展 Lua?

我有一个使用Lua5.2.1的VisualStudio2008C++03应用程序。我想用一个名为“foo”的模块扩展Lua,但是当我在我的Lua脚本中调用require("foo")时,出现错误:foo_test.lua:1:module'foo'notfound:nofieldpackage.preload['process']nofile'!\lua\process.lua'nofile'!\lua\process\init.lua'nofile'!\process.lua'nofile'!\process\我的Lua脚本:foo.bar()我的lua_foo.h文件:#inclu

c++ - string pop_back 是如何在常数时间内实现的?

std::stringpop_back():移除字符串的最后一个元素在C++规范中说C++11字符串类函数pop_back具有常数时间复杂度。(更准确地说-未指定但通常不变)http://www.cplusplus.com/reference/string/string/pop_back/除此之外,我阅读了C++11规范草案,据说pop_back等于str.erase(str.length()-1)。据我所知,删除功能只是分配新的内存量并将剩余的元素(未删除)复制到该内存中,这将花费线性时间。鉴于此,pop_back如何在恒定时间内完成。 最佳答案

c++ - 如何从 Lua C API 中的函数获取多个返回值?

我想知道如何从LuaCAPI中的函数获取多个返回值。Lua代码:functiontest(a,b)returna,b--IwouldliketogetthesevaluesinC++endC++代码:(调用函数的部分)/*pushfunctionsandarguments*/lua_getglobal(L,"test");/*functiontobecalled*/lua_pushnumber(L,3);/*push1stargument*/lua_pushnumber(L,4);/*push2ndargument*//*callthefunctioninLua(2arguments,

c++ - 有人可以解释为什么我想要或需要将 Lua 与 C++ 混合用于游戏吗?

我研究过一些Lua,并且我对C++比较熟悉,但我仍然看不出有任何真正的理由我想将Lua(或任何与此相关的脚本语言)与C++结合使用。如果我已经在用C++(一种快速语言)制作游戏,为什么我不直接用C++做所有事情呢?毕竟,我已经熟悉C++了。我为什么要花时间学习一门新语言以及如何将它集成到我的C++代码中?我敢肯定,只是让界面设置和工作会有问题。学习需要一些时间,它如何真正得到返回?它真的只对大型开发团队有益吗? 最佳答案 我附和已经说过的话,并且我想在此刻将Lua集成到我的游戏引擎中时添加我自己的想法!这取决于您制作的游戏类型,但无