草庐IT

c++ - shared_ptr 需要完整的类型;不能与 lua_State 一起使用*

我正在为Lua编写C++/OOP包装器。我的代码是:classLuaState{boost::shared_ptrL;LuaState():L(luaL_newstate(),LuaState::CustomDeleter){}}问题是lua_State是不完整的类型,而shared_ptr构造函数需要完整的类型。我需要安全的指针共享。(有趣的是,boost文档说大多数函数不需要完整类型,但构造函数需要,所以没有办法使用它。http://www.boost.org/doc/libs/1_42_0/libs/smart_ptr/smart_ptr.htm)我能解决这个问题吗?谢谢。

c++ - 使用 libCurl 从 gmail POP3 帐户读取电子邮件

我目前在一个C++项目中工作,该项目必须能够从gmailPOP3帐户读取电子邮件,就像标题所说的那样。同样重要的是,我需要下载邮件及其正文的附件(是否编码为base64?)。事实上,每个人都建议使用libCurl来完成这项任务,但他们网站上的代码示例无法正常工作。我在Libcurlwebsite上看到了这个例子:#include#includeintmain(void){CURL*curl;CURLcoderes;curl=curl_easy_init();if(curl){/*Setusernameandpassword*/curl_easy_setopt(curl,CURLOPT_

c++ - 在 push_back pop_front 场景中是否需要使用互斥锁锁定 STL 列表?

我有一个线程后推到STL列表,另一个线程从列表中弹出。在这种情况下我需要用互斥量锁定列表吗? 最佳答案 来自SGI'sSTLonThreadSafety:Ifmultiplethreadsaccessasinglecontainer,andatleastonethreadmaypotentiallywrite,thentheuserisresponsibleforensuringmutualexclusionbetweenthethreadsduringthecontaineraccesses.由于您的两个线程都修改了列表,我想您必

c++ - 如何使用 C API 创建嵌套的 Lua 表

我想创建一个表myTable={[0]={["a"]=4,["b"]=2},[1]={["a"]=13,["b"]=37}}使用CAPI?我目前的做法是lua_createtable(L,0,2);intc=lua_gettop(L);lua_pushstring(L,"a");lua_pushnumber(L,4);lua_settable(L,c);lua_pushstring(L,"b");lua_pushnumber(L,2);lua_settable(L,c);循环创建内表。之前,这个循环,我用lua_createtable(L,2,0);intoutertable=lua_

c++ - 除了避免 'extern C' 并获得 'C++ exception' 之外,将 Lua 编译为 C++ 有什么好处?

我是Lua的新手,我想使用C++将Lua嵌入到我们的游戏项目中。我注意到的第一件事是,允许将Lua编译为C++代码,并且从文档中,我了解到这将消除环绕Luaheader的“externC”,并且错误处理将是C++异常而不是跳远/定跳。我的问题是,除了这两个区别之外,将Lua代码编译为C++代码还有其他真正的好处吗?这两个并不能真正说服我,因为,1)用'externC'包装cheader并不困扰我,2)我们的项目不允许异常,所以我必须更改luaconf.h才能使用longjump/setjump任何方式。 最佳答案 那些是将Lua编译

c++ - LuaBind:如何将类的特定实例绑定(bind)到 Lua?

(旁注:这是游戏编程)使用LuaBind将整个类绑定(bind)到Lua很容易:classtest{test(){std::cout//其他地方module[some_lua_state][class_("test").def(constructor()).def("print",&test::print)];现在我可以在Lua中创建类的实例并使用它:lua_example.luafoo=test()//willprint"constructed!"ontheconsolefoo:print()//willprint"works!"ontheconsole但是,现在我想将一个特定的测试

c++ - 关于RAII、STL pop、PIMPL的基本问题

今天阅读proggit时,我在post中看到了这条评论关于C++如何在GoogleAi挑战赛中名列前茅。用户reventlov声明ThebiggestproblemIhavewithC++isthatit'swaaaytooeasytothinkthatyou'rea"C++programmer"withoutreallyunderstandingallthethingsyouneedtounderstandtouseC++acceptablywell.You'vegottoknowRAII,andknowtousenamespaces,andunderstandproperexcep

c++ - 从 C API 调用的 Lua 脚本的执行时间限制

luaL_loadfile(mState,path.c_str());lua_pcall(mState,0,0,0);有没有办法为这两个C++语句设置执行时间限制(比如10-20秒),加载然后执行lua文件?由于Lua文件不受信任,我不希望恶意用户使用Lua代码中的无限循环无限期地挂起程序。标记C因为LuaAPI是C,标记C++因为我用的是C++ 最佳答案 lua_sethook可用于告诉解释器在执行每条“计数”指令后调用一个钩子(Hook)。这样你就可以监控用户脚本并在它用完配额时终止它:intlua_sethook(lua_St

java - 为什么 pop() 应该接受一个参数?

快速背景我是一名Java开发人员,在空闲/无聊的时间里一直在玩弄C++。前言在C++中,您经常看到pop通过引用获取参数:voidpop(Item&removed);我知道用您删除的内容“填充”参数很好。这对我来说完全有意义。这样,要求删除顶部项目的人就可以查看删除的内容。但是,如果我要在Java中执行此操作,我会这样做:Itempop()throwsStackException;这样,在pop之后我们返回:作为结果的NULL,一个Item,或者一个异常将被抛出。我的C++教科书向我展示了上面的示例,但我看到大量不带参数的堆栈实现(例如stlstack)。问题如何在C++中实现pop函

c++ - 嵌入:单声道与 lua

我有兴趣了解人们在C/C++应用程序中嵌入mono(.NET的开源实现)的经验。如何分发这样的应用程序以及依赖项是什么?我在OSX上测试过,mono是一个巨大的框架(数百MB)。我的应用程序的用户是否都需要这个大框架,或者是否可以将其剥离或将所有内容编译到主要可执行文件中。我以前有过将Lua嵌入C++应用程序的经验,而且效果非常好,因为我可以将整个lua解释器静态链接到我的主要可执行文件中。所以我没有外部依赖。是否可以用单声道做类似的事情?这里有任何Lua人可以评论一下与Lua相比他们如何发现单声道吗?PS:我所说的嵌入是指一个C++应用程序,它初始化一个单声道环境并加载一个.NET程