草庐IT

invalid-name

全部标签

c++ - Gtest : Expected Class-Name Before '{'

我正在尝试将Gtest下的测试用例转换为使用测试夹具,以便在添加更多测试时可以使用通用设置。但是,这会导致错误:test_integrate.cc:4:47:error:expectedclass-namebefore'{'tokenclassIntegratorTest:public::testing::test{这种失败是我无法理解的,因为根据我的经验,它通常是由循环导入引起的,并且导入与工作代码相比没有变化。完整代码如下:#include"gtest/gtest.h"#include"utils/integrate.hpp"classIntegratorTest:public::

c++ - 将 initializer_list 插入 std::vector 时出现 "Invalid iterator range"

此代码在Ideone上按预期编译并运行良好:#include#include#includeintmain(){std::vectorstrVec;strVec.insert(strVec.end(),{L"black",L"white",L"red"});strVec.insert(strVec.end(),{L"blue",L"green"});//STLexceptionfor(auto&i:strVec){std::wcout但是,在MSVC(VisualStudio2013)中因“无效的迭代器范围”而失败。有什么见解吗?顺便说一句,插入更多元素是可行的,例如在第二个插入中,这

c++ - %llx 格式说明符 : invalid warning?

已编辑以删除第一个警告以下代码在mingw32下的g++4.4.0中按预期工作:#includeintmain(){longlongx=0xdeadbeefc0defaceLL;printf("%llx\n",x);}但是如果我使用-Wall启用所有警告,它会说:f.cpp:Infunction'intmain()':f.cpp:5:warning:unknownconversiontypecharacter'l'informatf.cpp:5:warning:toomanyargumentsforformat%lld也是一样。这在较新的版本中已修复吗?再次编辑添加:如果我指定-std

c++ - typedef-name 作为基类 : illegal but widely tolerated

[class.derived]的第一段说的是基类说明符,Ifthenamefoundisnotaclass-name,theprogramisill-formed.但是,一个simple测试表明Comeau和g++-ansi-pedantic都接受typedef-name作为基础。Boostheader上的简单grep-r'[^:]:mpl'表明流行的库通常依赖于这种行为。是否有任何编译器实际上拒绝了基说明符中类的typedef?GCC甚至检查基类类型是否不是const,这改进了非标准功能。有解决办法吗?我唯一能想到的就是用C++11别名模板替换typedef。一个模板化的别名声明声明

C++ 编译错误 - 命名空间 std 中的 "no type named ' 函数”

我正在为我的C++编程类(class)作业,其中涉及实现HashMap。我的导师给了我们一个头文件,我们需要将其与我们的HashMap类一起使用。提供的头文件包含以下行:typedefstd::functionHashFunction;根据我对C++的(有限的)理解,这会将HashFunction类型定义为std::function。但是,当我编译代码时,出现错误:./HashMap.h:46:15:error:notypenamed'function'innamespace'std'typedefstd::functionHashFunction;~~~~~^./HashMap.h:

c++ - 了解 "template argument is invalid"错误消息

考虑代码:#include#includestructtest1{voidInvoke(){};};structtest2{templatevoidInvoke(){};};enumclassInvokableKind{NOT_INVOKABLE,INVOKABLE_FUNCTION,INVOKABLE_FUNCTION_TEMPLATE};templatestructget_invokable_kind{conststaticInvokableKindvalue=InvokableKind::NOT_INVOKABLE;};templatestructget_invokable_ki

c++ - OpenCl 代码在一台机器上工作,但我在另一台机器上得到 CL_INVALID_KERNEL_ARGS

我有以下代码,它在一台机器上运行良好,但是当我尝试在另一台配备更好显卡的机器上运行它时,我遇到了错误:global[0]=512;global[1]=512;local[0]=16;local[1]=16;ciErrNum=clEnqueueNDRangeKernel(commandQueue,myKernel,2,NULL,global,local,0,NULL,&event);错误:Error@clEnqueueNDRangeKernel:CL_INVALID_KERNEL_ARGSError@clWaitForEvents:CL_INVALID_KERNEL_ARGS知道问题出在

C++ 错误 : invalid types 'int[int]' for array subscript

尝试学习C++并完成一个关于数组的简单练习。基本上,我已经创建了一个多维数组,我想创建一个打印出值的函数。Main()中的注释for循环工作正常,但是当我尝试将该for循环转换为函数时,它不起作用,而且对于我来说,我不明白为什么。#includeusingnamespacestd;voidprintArray(inttheArray[],intnumberOfRows,intnumberOfColumns);intmain(){intsally[2][3]={{2,3,4},{8,9,10}};printArray(sally,2,3);//for(introws=0;rows

C++ 宏之谜 : Printing the name of the TYPE

在宏中,我可以使用xxxx_##TYPE和##TYPE##_xxxxx来正确填写TYPE名称,但我不能在字符串中间使用##TYPE##,例如(打印“##TYPE##是类型的名称”;)有解决办法吗? 最佳答案 您可以通过结合两个特征来做到这一点。一种是“字符串化”,即通过在宏参数前加上#前缀将其转换为字符串。(这与您显然已经熟悉的“标记粘贴”运算符##相关但不同。)另一个事实是,当连续给定多个字符串文字时,C++会将它们组合起来成一个字符串。例如,"a""b""c"等同于"abc"。我不清楚你的宏到底是如何定义的,所以我不能告诉你要输

c++ - ISO/IEC 10646 中的 "character short name"是什么?

C++112.3/2说:Thecharacterdesignatedbytheuniversal-character-name\UNNNNNNNNisthatcharacterwhosecharactershortnameinISO/IEC10646isNNNNNNNN所以我下载了ISO/IEC10646,但我找不到“字符短名称”的定义。有人可以澄清一下这是指什么吗?我最初的目标是找出为什么在使用\U指定代码点时需要8个十六进制数字,因为6个数字总是足够的。所以我也很想知道为什么C++11指定我们使用\UNNNNNNNN而不是\UNNNNNN。 最佳答案