草庐IT

styles-correct

全部标签

c++ - -Werror=old-style-cast 的意义?

我正在使用将一些整数转换为float以进行除法的代码。size_ta;uint8_tb,c;a=(float)b/(float)c;我在编译时启用了警告标志,我得到了一个用于“旧类型转换”的警告标志。有没有更好或更合适的方式来转换这些东西?如果是,怎么办? 最佳答案 旧式转换是“C风格”转换。-Werror=old-style-cast将C风格转换的使用变成错误。你应该使用C++casts.在这里你可以使用一个static_cast:size_ta;uint8_tb,c;a=static_cast(b)/static_cast(c)

C++ Cereal : serialize C-style array

你能/如何使用cereal序列化一个数组?图书馆。即voidsave(Archive&ar,constunsignedintversion)const{unsignedintl=g1_size_bin(g,POINT_COMPRESS);uint8_tdata[l];memset(data,0,l);g1_write_bin(data,l,g,POINT_COMPRESS);ar(l);ar(data);//whatshouldbehere}那行不通(我也不希望如此)。也不ar(cereal::binary_data(data,l));(我认为这会起作用,因为它看起来像人们会使用的增强

c++ - (Ubuntu 14.04) apt-get libopencv-dev,但出现错误 : Unable to correct problems, 你持有损坏的包

正在读取包列表...完成构建依赖树正在读取状态信息...完成无法安装某些软件包。这可能意味着你有请求一个不可能的情况,或者如果你使用的是不稳定的一些必需的包尚未创建的分发或已移出传入。以下信息可能有助于解决问题:Thefollowingpackageshaveunmetdependencies:libopencv-dev:Depends:libopencv-objdetect-dev(=2.4.8+dfsg1-2ubuntu1)butitisnotgoingtobeinstalledDepends:libopencv-highgui-dev(=2.4.8+dfsg1-2ubuntu1)

c++ - 权威的 “correct”方法,用于针对size_t测试循环变量时避免有符号/无符号警告

下面的代码生成一个编译器警告:privatevoidtest(){bytebuffer[100];for(inti=0;iwarning:comparisonbetweensignedandunsignedintegerexpressions[-Wsign-compare]这是因为sizeof()返回一个size_t,它是无符号的。我已经看到了许多有关如何处理此问题的建议,但是没有一个建议有很多的支持,也没有一个有任何令人信服的逻辑,也没有任何支持一个方法明显“更好”的引用。最常见的建议似乎是:忽略警告关闭警告使用类型为size_t的循环变量使用带有技巧的size_t类型的循环变量来避

c++ - "Correct"发送 UDP 数据报序列的方式?

我的印象是UDP的不稳定性是物理层的一个属性,但似乎不是:我正在尝试通过UDP发送消息,它被分成一系列数据包。消息识别和重新排序是隐式完成的。我在同一台计算机上运行的两个应用程序上测试了此方法,并希望它能顺利运行。然而,即使数据传输完全在同一台机器上的两个程序之间进行,也存在丢包的情况,而且也很频繁。丢失似乎也很随机:有时整个消息都通过了,有时没有。现在,即使在同一台机器上也会发生损失,这让我想知道我是否做对了?最初,我是在一次发送中异步发送消息的所有片段,而不是等待一个片段完成再发送下一个片段。然后,我尝试从前一条消息的完成例程中发送下一条消息。这确实提高了丢包率,但并没有完全阻止它

c++ - 在代码中使用 Style 自定义 Qt slider 时, handle 偏离凹槽

在mostexamples,自定义Qtslider是这样完成的(使用样式表):mySlider=newQSlider(centralWidget);mySlider->setObjectName(QStringLiteral("mySlider"));mySlider->setGeometry(QRect(645,678,110,21));mySlider->setOrientation(Qt::Horizontal);mySlider->setStyleSheet("QSlider::groove:horizontal{background-image:url(:/main/grap

c++ - 计时代码 "C2440: ' <function-style-cast >' : cannot convert from ' _CR' to 'std::chrono::milliseconds' 中的一个奇怪错误

我偶然发现了一个奇怪的错误C2440:'':cannotconvertfrom'_CR'to'std::chrono::milliseconds'基本上相当于HowardHinnant'sanotherquestion中的代码.这应该在VisualStudio2012RC上编译吗?这个问题的原因是什么?修复或解决方法如何?我的目标只是创建一个简单的计时器(没什么太严肃的),所以如果存在这种效果,将采取点-以及其他实现线索。问题代码如下。用法:timers::stopwatchw;w.start();std::cout并且头文件是(为简洁起见省略了实现)namespacetimers{c

c++ - const-correctness的解释是什么?

我认为“const-correctness”的概念定义得很好,但当我和其他人谈论它时,我们似乎对它的含义有不同的看法。有人说这是关于一个程序在尽可能多的地方都有“const”注释。其他人将程序定义为const-correct当且仅当在使用const注释的地方没有违反constness时(即,它是编译器为您检查的属性)。所以我想知道,这些函数中哪些是const正确的:structPerson{stringgetName1()const{return_name;}stringgetName2(){return_name;}stringgetName3()const{_name="John"

c++ - VS2012 错误 : The application was unable to start correctly (0xc000007b)

在尝试运行我在VisualStudio2012中构建的C++SFML32位程序的exe文件后,我收到错误“应用程序无法正确启动(0xc000007b)”。我在我的项目中静态链接了SFMLdll,但将以下dll与我的程序结合在一起:libsndfile-1.dllopenal32.dllmsvcp110.dllmsvcp110d.dllmsvcr110.dllmsvcr110d.dll问题是什么? 最佳答案 您遇到的实际错误代码是0xC000007B。那就是NTSTATUS错误代码STATUS_INVALID_IMAGE_FORMAT

c++ - 与 friend 一起上课而不是前向声明,: which compiler is correct

这个问题在这里已经有了答案:Friendmethod"notdeclaredinthisscope"inC++(1个回答)Error:'FriendMemberFunctionName'wasnotdeclaredinthisscope(3个答案)关闭3年前。我有这个简单的C++程序:#includestructobj{friendintf(int);voidm(intx){std::cout如果我使用GNUC++编译器g++进行编译,我会得到错误prog.cpp:7:55:error:'f'wasnotdeclaredinthisscope但是,如果我使用cl(和/W4)编译它,它会