草庐IT

UNIX-based

全部标签

c++ - 在 C++ 中,如何在不使用 new 且不单独声明单个元素的情况下创建 `std::initializer_list<base *>`?

在C++中,您可以在文件范围内声明一个数组:staticfooa[]={foo(),foo(),foo()};各个foo对象具有静态存储(即它们不在运行时分配)。如果我有一个由两个或更多派生类继承的基类,则以下内容可以编译但由于切片而无法按预期工作:staticbasea[]={derived1(),derived2()};这样的事情不应该导致切片发生:staticderived1d1;staticderived2d2;staticbase*a[]={&d1,&d2};我的问题是:如何在不声明d1的情况下做同样的事情?和d2与a分开,同时为单个(指向的)元素保留静态存储?以下给出了“获

c++ - 如何通过 UNIX 套接字发送 std::vector<std::string> ?

对于我的申请,我需要能够发送std::vector通过UNIX套接字(本地),并在套接字的另一端获取vector的拷贝。使用O(1)执行此操作的最简单方法是什么?相对于vector大小的消息(即不为vector中的每个字符串发送消息)?因为这一切都在同一台主机上,并且因为我控制套接字的两端,所以我不关心特定于机器的问题,例如endinness或vector/字符串表示。出于各种原因,我想避免使用任何外部库。 最佳答案 std::string不会阻止您在字符串中包含空值。只有当您尝试将这些与nul敏感API一起使用时,您才会遇到麻烦。

c++ - 同名类之间的共享 vtables : call to virtual method crashes when casting to base type

检查下面的更新,我可以重现并需要帮助。我有一个奇怪的崩溃,其中一些方法在除1个地方之外的任何地方都可以正常工作。这是代码:structbase{virtualwchar_t*get()=0;//canbe{returnNULL;}doesn'tmatter};structderived:publicbase{virtualwchar_t*get(){returnSomeData();}};structcontainer{deriveddata;};//thisisapprox.howitisusedinrealprogramvoidoutput(constbase&data){data

c++ - 错误 : Range-based 'for' loops are not allowed in C++98 mode

所以我正在关注此页面上的教程:http://www.cplusplus.com/doc/tutorial/control/但是我在做范围/基于for循环时遇到了麻烦。我找到了这个页面:GNUGCCcompilerupdating那里的答案说我应该打开“项目”和“属性”。但是当我尝试这样做时,“属性”选项变灰了,没有任何解释:http://imageshack.com/a/img571/4371/xd1x.png那么..我怎样才能激活范围/基于for循环? 最佳答案 将-std=c++11标志传递给编译器。当然,GCC应该足够新(>=

c++ - 从 Unix 迁移到 Linux 时 Makefile Include 指令

我的任务是将古老的基于C++的代码从Unix环境迁移到Linux。该项目由多个Makefile组成,用于库的不同“模块”。我已经解决了一些问题,但是现在在使用include指令时遇到了问题。显然,Makefile的构造方式是为不同的文件使用单独包含指令,并且它在Unix服务器中运行了多年。例如:include../../../../util/genmake.defprocessControl.slOBJS=processControl.ooutputControlOBJS=outputControl.oinputControlOBJS=inputControl.ocleanList=*

c++ - 在 unix/win32 上高效计算用于日志记录的日期/时间戳

在对我们的系统进行概要分析和分析后,我得出的结论是,系统的日志记录组件是众多瓶颈之一,大约占总运行时间的17%-很多事情被记录下来。其中,记录器消耗的大约5%的时间与以下列格式生成ascii格式的日期/时间戳有关:YYYYMMDDHHMMSS.fff-我们每秒大约记录70万行。(大约每秒700Kx(本地时间和gettimeofday)次调用)我想知道其他SOer有什么技术可以有效地生成时间戳。欢迎使用跨平台解决方案。注意1:我们研究了Boost.datetime-它很棒,但是对于我们的需求来说有点太慢了,std::chrono是一个完美的解决方案,但是不幸的是我们必须支持c++11之前

c++ - Unix 错误信息 "Killed"

我正在Unix平台(当前运行的是cshell)上用C++开发Hex游戏。我游戏的人工智能用不到一分钟的时间来决定它的行动(我使用的是一种蒙特卡罗算法),几步之后,程序自行终止,只是在返回我的之前打印“Killed”命令提示符。有谁知道导致这种情况发生的原因,并且对我如何更改代码以修复它有任何建议?如果它有帮助,我没有使用我的系统。我使用SSHSecureShell连接到我学校的服务器。我还应该指出,我不认为我的算法有什么问题,因为它在崩溃之前按我预期的方式工作,但它在决定第7步时一直崩溃。 最佳答案 这就是执行此操作的内存不足管理器

C++ 方法重载 : base and derived parameters

在网上搜索后,我没有设法找到这个问题的答案:我有这个重载方法:foo(Base*base);foo(Derived*derived);在这种情况下,“Derived”是“Base”的子类。当我打电话时:foo(newDerived());我注意到总是调用第一个重载方法,而我想获得相反的结果(调用以“Derived*”对象作为参数的方法)。如何解决?谢谢。编辑:好的,这是我的实际情况:我有一个UIWidget和一个UIScoreLabel类。UIScoreLabel派生自UIWidget。我还有一个GameEvent类(Base)和一个P1ScoreGameEvent类(Derived)

c++ - 为什么 'Base Class object' 不能调用它自己的虚函数? C++

我已经阅读了C++中的虚函数,并了解它们如何为程序员提供使用基类指针访问派生类成员函数的权限。(又名多态性)。一直困扰我的问题是:为什么要在基类中声明一个同名函数,如果最后它必须被声明为虚函数?(注意:我需要有关虚函数多态性方面的答案)在下面的代码中,如果使用基类指针调用“virtualdisplay()”(第22行),则会显示错误。为什么C++中的虚函数如此严格w.r.t.没有被基类指针调用?.#includeusingnamespacestd;classB{public:voidvirtualdisplay(){coutdisplay();Whycan't'b'callit'sow

c++ - 为什么friend类可以通过Derived类访问到Base类私有(private)数据

这是我第一次在这里发帖。classBase{private:intbase;friendclassQuestion;};classDerived:publicBase{private:intsuper;};classQuestion{public:voidtest(Base&base,Derived&derived){intvalue1=base.base;//Noproblem,becauseQuestionisafriendclassofbaseintvalue2=derived.super;//Compileerror,becauseQuestionisnotafriendcla