草庐IT

c++ - 什么是 C++11 扩展 [-Wc++11-extensions]

我需要一些帮助来了解此错误发生的位置:warning:in-classinitializationofnon-staticdatamemberisaC++11extension[-Wc++11-extensions]这是它来自的代码部分:typedefstructHand{boolstraight=false;boolflush=false;boolfour=false;boolthree=false;intpairs=0;}Hand; 最佳答案 这不是错误,这是警告。它告诉您,您只能初始化以C++11标准(之所以这样称呼是因为它于

c++ - 派生类中的析构函数标记为 noexcept(false)

有如下代码:classMember{public:~Member()noexcept(false){}};classA{public:virtual~A(){}};classB:publicA{public:Memberm;};错误是:main.cpp:13:7:error:looserthrowspecifierfor‘virtualB::~B()noexcept(false)’classB:publicA^main.cpp:10:11:error:overriding‘virtualA::~A()noexcept’virtual~A(){}^为什么B类中的析构函数被标记为noexc

c++ - isalpha(<mychar>) == true 计算结果为 false?

stringtemp等于来self的调试器的“ZERO:\t.WORD\t1”。(我文件的第一行)stringtemp=RemoveWhiteSpace(data);inti=0;if(temp.length()>0&&isalpha(temp[0]))cout0&&isalpha(temp[0])==true)cout这是我的代码,用于检查temp的第一个字符是否为a-z、A-Z。第一个if语句将评估为true,第二个if语句将评估为false。为什么?!?!?!即使没有“temp.length()>0&&”,我也试过了,它仍然评估为false。它只是讨厌“==true”。我唯一能想

c++ - std::logic_error 而不是返回 false

我正在寻找某人对std::logic_error用法的意见,而不是使用复杂的嵌套if/elseif列表返回true/false。我想从很多类似的函数中移动,如下面的函数boolvalidate_data(){std::vectorv;//fillwithdataif(v.find(10)==v.end()){returnfalse;}//otherchecksthatreturnfalse}到boolvalidate_data(){std::vectorv;//fillwithdataif(v.find(10)==v.end()){throwstd::logic_error("erro

c++ - 比较两个具有相同值的 TCHAR 结果为 false

我正在尝试检查我的应用程序路径,如果它不是指定路径,则移动它。我觉得我的代码很可靠,但它不能正常工作。TCHARpCheck[MAX_PATH];TCHARxPath[MAX_PATH];GetModuleFileName(NULL,xPath,MAX_PATH);if(SHGetSpecialFolderPath(HWND_DESKTOP,pCheck,CSIDL_DESKTOP,FALSE)){wcscat(pCheck,L"\\NewFile.exe");MessageBox(NULL,pCheck,NULL,NULL);MessageBox(NULL,xPath,NULL,NU

c++ - 修复 GCC 中的 "comparison is always false ..."警告

我遇到了一个我确定很容易解决的问题,但我不知所措......我有一个执行以下代码的模板:Tvalue=d;if(std::numeric_limits::is_signed){if(value现在,出于显而易见的原因,当此代码针对无符号类型编译时,GCC会给我一个警告(由于数据类型的范围有限,比较总是错误的)。我完全理解这背后的原因,我进行了numeric_limits检查以查看是否可以让编译器关闭它(它适用于MSVC)。唉,在GCC下,我得到了警告。有什么办法(除了禁用警告,我什至不知道你是否可以使用GCC)来修复这个警告?代码永远不会被调用,我假设优化器也会编译它,但我无法摆脱警告

C++ 'true' 和 'false' 关键字在 Visual C++ 6.0 中突然不正确或错误

我的编译器(VC++6.0sp6)显然已经疯了。在某些代码片段中,我看到“boolmybool=true;”评估并分配false,反之亦然。将true/false关键字更改为1/0使其工作正常。在不更改true/false关键字的情况下,相同的代码可以在其他地方正常编译。这可能是什么原因造成的?我的第一个想法是RAM或磁盘损坏,但一切都很好。我离重新格式化我的驱动器并重新安装所有东西不远了,但我很害怕我仍然会看到同样的不当行为。在某个地方的宏或链接库在技术上是否有可能搞砸“true”和“false”的含义?更新:谜团已揭开。我机器上的一个环境变量标志被设置为“false”,一些预处理器

c++ - 模板类型的值,如 std::false_type

如果std::false_type是一个类型,这个类型的有效值是多少?如果我只想实现如下所示的返回类型为std::false_type的函数,我该如何实现?typenamestd::false_typeoperator()(){returndeclval();} 最佳答案 按照评论中的建议尝试returnstd::false_type{};或return{};。 关于c++-模板类型的值,如std::false_type,我们在StackOverflow上找到一个类似的问题:

将ints写入文件并读取它们,hasnext()返回false

我必须将100个随机整数写入文件,并以越来越多的顺序显示它们。printwriter写了它们,但是当我尝试从文件中读取时,方法hasNext()返回false,我不明白为什么。我想问题是打印稿。try(PrintWriteroutput=newPrintWriter(file);Scannerinput=newScanner(file)){for(inti=0;i看答案你需要flush输出流将更改写入文件。...for(inti=0;i此外,close在这种情况下,会自动冲洗流-因此,如果您尝试在try块,你将看到更改。为一个PrintWriter,flush每当打印新线时也被称为printl

c++ - 如何使用 Eigen 3 表达 "<array-of-true-or-false> = <array> <= <scalar>"?

我正在使用Eigen3模板库将一些MATLAB代码移植到C++,我正在为这个常见问题寻找一个好的映射MATLAB习惯用法:K>>[12345]因此,比较数组和标量,返回具有相同形状的bool数组。我知道Eigen的Array类有系数比较运算符,但如果我正确地解释了文档,它们只适用于另一个数组;不是标量值。是否有一些我错过的选项可以执行与标量的比较?还是失败了,一个很好的惯用方法来创建一个形状适当的Array填充表达式RHS的标量值? 最佳答案 感谢#eigenIRCchannel的ChriSopht_:VectorXdcompare