草庐IT

c++ - QTcpSocket 客户端自动重连

我正在尝试编写一段代码,定期尝试使用QTcpSocket连接到服务器,直到服务器启动并准备就绪。客户端还应在服务器关闭时自动并定期尝试重新连接,直到服务器再次启动或用户手动关闭程序。我所做的是订阅QTcpSocket的连接信号和错误信号。当我捕捉到错误信号时,我基本上会再次调用connectToHost方法。我的代码会定期尝试连接到主机,直到服务器准备就绪(这部分工作正常)。但是,问题是当服务器关闭时它永远无法重新连接。当连接断开时,我会按预期收到RemoteHostClosedError。但是,在同一方法(我捕获RemoteHostClosedError的地方)中再次调用connec

c++ - 打印 std::this_thread::get_id() 给出 "thread::id of a non-executing thread"?

这曾经工作得很好(然后外星人一定黑了我的电脑):#include#includeintmain(){std::cout现在它打印thread::idofanon-executingthread。ideone.com打印了一些ID,但有趣的是是什么导致了我平台上的这种行为。$uname-aLinuxxxx3.13.0-77-generic#121-UbuntuSMPWedJan2010:50:42UTC2016x86_64x86_64x86_64GNU/Linux有什么想法吗?编辑:嗯..当我添加std::cout两行打印相同的ID,但是当我删除它时,结果仍然相同-“非执行线程”。

c++ - VC++ 使用 fp :fast causes wrong (not just inaccurate) results - is this a compiler bug?

我已经安装了最新的VS2017更新(15.4.4),但在编译我们的项目时,单元测试开始失败。在使用优化(/O2)和浮点快速模型(/fp:fast)时,问题似乎发生在某些情况下。以前的编译器(VS2017update15.2)没有出现这个问题。这是一个示例程序:#includeconstfloatFACTOR=0.01745329251994329576923690768489f;unsignedlonglonghoursToMicrosecs(inthours){returnhours*3600*1000000LL;}floatdegToRad(floatdeg){returndeg*

c++ - 为什么我不能将 this 指针显式传递给成员函数?

C++标准(ISOc++11)在第9.3.1节中提到Anon-staticmemberfunctionmaybecalledforanobjectofitsclasstype,orforanobjectofaclassderived(Clause10)fromitsclasstype,usingtheclassmemberaccesssyntax(5.2.5,13.3.1.1).尝试使用g++(版本4.8.2)编译此代码classfoo{public:voidbar(){cout给出编译时错误,因为它无法匹配函数的签名。考虑到标准关于调用成员函数的规定,我想这是意料之中的。由于该方法在

c++ - 从临时对象返回左值引用

当*this是右值时,是否允许返回对*this的左值引用?#include#includeusingnamespacestd;classA{public:A&f(){return*this;}stringval()const{return"works";}};intmain(){coutf()返回的值在某些时候是否会成为悬空引用?如果这是一个右值,那么调用f()会延长调用者的生命周期吗? 最佳答案 *this从来都不是右值,但在这种情况下,它是(对)临时值的(引用)。临时对象在定义它们的语句完成之前是有效的对象,即直到代码到达终止;

c++ - std::thread 类与 C++ 中的 std::this_thread 命名空间?

当我们已经有了一个std::thread类时,为什么我们需要std::this_thread命名空间?它们之间的基本区别是什么?什么时候应该使用std::thread类以及什么时候使用std::this_thread命名空间? 最佳答案 this_thread命名空间将访问当前线程的函数分组,所以当我们需要在当前线程上做一些事情时,我们不需要访问thread对象线程。线程类不提供对yield和sleeping的访问,这些函数只对当前线程有意义,因此可以在this_thread命名空间中找到。如果我们想要关于不同线程的信息,我们需要那

c++ - 对成员函数的模糊调用以在 lambda 中捕获 this

我在尝试为捕获的this调用lambda内部的成员函数时遇到了问题。该函数有const和非const版本,它以类型为​​模板。下面的代码演示了错误:structTEST{templatevoidtest(){}templatevoidtest()const{}TEST(){[this](){test();}();}};消息:http://rextester.com/MLU2098source_file.cpp(13):errorC2668:'TEST::test':ambiguouscalltooverloadedfunctionsource_file.cpp(7):note:coul

c++ - 如何使用另一个类的对象为类编写复制构造函数

我在编写这个相当简单的程序时遇到了麻烦。我有两个类A和B。B有一个A的对象。我需要编写B的Copy构造函数,以便B的两个实例将具有不同的A实例。有没有什么巧妙的方法可以做到这一点?要做的一件事是获取parm的所有成员变量,创建一个新的A对象并分配这些成员变量。但是如果这个类有更多的成员变量,那就是个问题了。如何简单地写这个?classA{public:intdata;A(){}A(intparm):data(parm){}A(constA&parm){this->data=parm.data;}A&operator=(constA&parm){if(this!=&parm){this-

c++ - 你应该如何用 shared_ptr 返回 *this?

另请参阅:Similarquestion下面的代码显然是危险的。问题是:您如何跟踪对*this的引用?usingnamespaceboost;//MyClassDefinitionclassMyClass{public:shared_ptrcreateOtherClass(){returnshared_ptrOtherClass(this);//baaad}MyClass();~MyClass();};//OtherClassDefinitionclassOtherClass{public:OtherClass(const*MyClassmyClass);~OtherClass();}

c++ - 为什么编译器说 : 'enable_if' cannot be used to disable this declaration

templateusingEnable_if=typenamestd::enable_if::type;classDegree;templateconstexprinlineboolIs_Degree(){returnstd::is_base_of::value;}classDegree{public:std::size_tinDeg=0;};templateclassVertex:publicSatellite{public:explicitVertex(intnum):n(num){}private:std::size_tn;};templateclassEdge{public:/