草庐IT

int_void

全部标签

带有文件流错误的 C++ Void 函数

我正在尝试编写一个代码,它接受一个输入文件并组织它并计算一些值。但是,我的getName函数有问题,如果读取-1,该函数应该通过使用get成员函数对输入文件中的字符求和来分配名字和姓氏以通过引用参数调用。以下是代码的错误参数:main.cpp:7:14:error:variableorfield'getName'declaredvoidmain.cpp:7:14:error:'ifstream'wasnotdeclaredinthisscopemain.cpp:7:24:error:'shoppingCartInput'wasnotdeclaredinthisscopemain.cpp

c++ - 在 C++ 中比较 char 和 Int

在C++中,由于隐式类型转换,可以将int与char进行比较吗?还是我误解了这个概念?比如,我能不能做intx=68;chary;std::cin>>y;//Assumingthattheuserinputs'Z';if(x还是我们需要先将其转换为int?所以if(x(y)){cout 最佳答案 两个版本的问题是您无法确定由负值/大值产生的值(如果char确实是符号字符)。这是实现定义的,因为实现定义了char是指signedchar还是unsignedchar。解决此问题的唯一方法是首先转换为适当的有符号/无符号char类型:if

c++ - 将 int[][] 分配给 int**

这个问题在这里已经有了答案:HowdoIusearraysinC++?(5个答案)关闭8年前。据我所知,在某些情况下,数组会转换为指向其第一个元素的指针:inta[5];int*p;p=a;按照这种方法并考虑到我可以将数组分配给指针,为什么我不能将二维数组分配给指向指针的指针?inta[5][5];int**q;q=a;但是,我可以将指针数组分配给指向指针的指针:int*p[5];int**q;q=p;如果将数组转换为指向其第一个元素的指针,则在第二个示例中发生q=a时,a应该是指向a[0]的指针,而a[0]应该是指向a[0]的指针[0],对吧?此外,如果我这样做,我不会收到错误:co

c++ - int[n][m],其中 n 和 m 在运行时已知

我经常需要创建一个二维数组,其宽度和高度(让它们为n和m)在编译时未知,通常我这样写:vectorarr(n*m);我手动访问元素:arr[j*m+i]我最近被告知我可以改写:intarr[n][m]//nandmstillonlyknownatruntime.所以这里有2个问题:C++标准允许这种行为吗?我应该如何将这样的数组传递给函数?g++报告arr的类型为int(*)[n],但同样,n是动态的,在声明它的函数之外是未知的(main)。 最佳答案 您所询问的功能(尺寸仅在运行时已知)是C++的非标准扩展,而是C.99的标准扩展

c++ - 隐式转换将符号 'int"更改为 'unsigned int"

我正在使用clang++编译程序,我需要在clang++中正确编译它。我在其他编译器上没有错误。代码中的错误行是memset(grid_,0,sizeof(int)*x_quadrants*y_quadrants);整个函数是这样的:Ocean::Ocean(intnum_boats,intx_quadrants,inty_quadrants){grid_=newint[x_quadrants*y_quadrants];memset(grid_,0,sizeof(int)*x_quadrants*y_quadrants);x_quadrants_=x_quadrants;y_quadr

java - 使用 void* 作为 Java 对象的 C++ 等价物

我正在尝试创建一个包含void*的std::vector的类。有人告诉我,void*是相当于Java中的Object的C++。由于这是用Java编写的程序的C++端口,理论上它应该可以工作。Java:ArrayListlist;C++:vectorlist;这不会编译,给出错误:“'reference':非法使用类型'void'”。void*真的是Java的Object的C++等价物吗?我用错了吗? 最佳答案 JavaObject是为所有Java类提供一些通用属性的基本基类。C++中没有这样的东西。如果要设计多态层次结构,请设计自己

c++ - 将 float 转换为 int,还是将 int 转换为 float?

我可以将常量定义为float或32位uint:constfloatSecondsPerMinute=60.0F;或constuint32SecondsPerMinute=60U;const用在一些期望int的方程和一些期望float的方程中。我想让我的编译器和静态分析工具满意,所以我会根据需要将其static_cast为适当的类型。是将const定义为float并转换为int更好,还是将其定义为int并转换为float?这有什么不同,还是这更多是个人意见?假设常量与int和float的使用次数相同。 最佳答案 模板怎么样:templ

c++ - std::future<neither::Either<int, std::string>> 段错误

本题中的代码使用了Either在这里找到实现:https://github.com/LoopPerfect/neither.明确地说,我怀疑这是这个特定库的问题,否则我会在那里制造问题。以下代码段按预期工作:std::futuref=std::async(std::launch::async,[](){return"test";}std::cout下面会产生一个段错误:std::future>f=std::async(std::launch::async,[](){returnneither::Either(neither::right(std::string("test")));})

c++ - 函数成员中的 enable_if 用于 void 和继承

我试图理解为什么这段代码无法编译://test.hstructBase{virtual~Base{};virtualvoidexecute(){}virtualvoidexecute(int){}virtualvoidexecute(double){}}templatestructTest:Base{voidexecute(typenamestd::enable_if::value,void>::type){//DoA}voidexecute(typenamestd::enable_if::value,int>::typet){//DoB}};//main.cppTestt;我收到编译

c++ - 使用/Wp64 编译时如何在没有警告的情况下将 strlen 的结果转换为 int

intl=strlen(s);警告C4244:“=”:从“__w64int”到“int”的转换,可能会丢失数据我需要用内联函数替换strlenintl=new_strlen(s);但是我如何在没有警告且不使用pragma的情况下将strlen的结果移植到int中?我可以保证我的字符串中不超过20亿个字符!所有像reinterpret_cast、static_cast这样明显的事情也会产生错误或警告。编辑:啊。c风格的转换:(int)确实有效。我一直坚信它没有。 最佳答案 constchar*str="Hello";intlen=st