草庐IT

list_type

全部标签

c++ - `type *var = (int)0` ,合法与否?

下面的例子:char*var=(int)0;在gcc和cl.exe上编译,但在clang中导致错误:cannotinitializeavariableoftype'char*'withanrvalueoftype'int'谁是正确的?对于它的值(value),C++11说(强调我的)4.10/1Anullpointerconstantisanintegralconstantexpression(5.19)prvalueofintegertypethatevaluatestozerooraprvalueoftypestd::nullptr_t.Anullpointerconstantca

c++ - 为什么我不能将此对象推送到我的 std::list 中?

刚开始用C++编程。我创建了一个Point类、一个std::list和一个迭代器,如下所示:classPoint{public:intx,y;Point(intx1,inty1){x=x1;y=y1;}};std::listpointList;std::list::iteratoriter;然后我将新点推送到pointList。现在,我需要遍历pointList中的所有点,所以我需要使用迭代器进行循环。这就是我搞砸的地方。for(iter=pointList.begin();iter!=pointList.end();iter++){PointcurrentPoint=*iter;gl

C++初阶:适合新手的手撕list(模拟实现list)

上次讲了常用的接口:今天就来进行模拟实现啦文章目录1.基本结构与文件规划2.空参构造函数(constructor)3.完善迭代器(iterator)(begin(),end())4.ListCapacity(size(),empty())4.增删改查(push_back,pop_back,pop_front,push_front,insert,erase)6.clear()和swap()7.完善构造函数7.1list(size_typen,constvalue_type&val=value_type());7.2利用迭代器进行构造7.3拷贝构造8.重载=9.析构函数10.反向迭代器1.基本结构

c++ - #include <string> 在 header 中定义了一些结构。错误 : string does not define a type

#ifndefSTRCUTS_H#defineSTRCUTS_H#includestructmenuEntry{stringitemID;//'string'doesnotnameatypestringitemName;//'string'doesnotnameatype};#endif当我将#include放在header保护上方时,我得到了同样的错误。想一想,我以前在将结构定义放在标题中时遇到过奇怪的麻烦。一定是我没有得到的东西。 最佳答案 您需要将string更改为std::string,即#ifndefSTRCUTS_H#d

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++ - 警告 C4180 : qualifier applied to function type has no meaning; ignored

我已经设置了编译器/Za选项来禁用语言扩展,以便编译器严格使用标准ISOC++。这是我收到以下警告的示例接口(interface)类warningC4180:qualifierappliedtofunctiontypehasnomeaning;ignored这是关于函数返回类型中的const限定符,如果我删除const,警告就会消失,但我不想这样做,我想重新启用lanqage扩展。我的问题是:这个警告合理吗?如果不是,那么我将使用pragma禁用警告,但在此之前我想确保此警告是“误报”因为下面的类是正确的ANSIISOC++不是吗?所以警告应该被禁用?classIBet{public:

c++ - 仿函数和 initializer_list 的拷贝

我对复制仿函数和/或初始化器时发生的情况感到有点困惑。在下面的代码中,我认为我会一直复制/移动对象,但不管它是否存在段错误。我似乎做错了什么,但还没有弄清楚,我的错误假设是什么。奇怪的是,在cppreference.com我找不到initializer_list的复制或移动构造函数,所以我想知道在这些情况下实际发生了什么。#include#include#include#includestd::initializer_list>getInitializer(){return{[]()->std::string{return"If";}};}intmain(){std::function

C++ 二进制识别( list )

我们有大量的C++项目(GCC、Linux,主要是静态库),它们之间存在许多依赖关系。然后我们使用这些库编译一个可执行文件并将二进制文件部署在前端。能够识别该二进制文件将非常有用。理想情况下,我们想要的是一个小脚本,可以直接从二进制文件中检索以下信息:$identbinary$binary:Product=PRODUCT_NAME;Version=0.0.1;Build=xxx;User=xxx...$dependency:Product=PRODUCT_NAME1;Version=0.1.1;Build=xxx;User=xxx...$dependency:Product=PRODU

c++ - 迭代器声明 : "does not contain a type"

我很难理解为什么会收到此错误。我指的是Josuttis的STL书和其他资源,看来我在下面声明我的迭代器的方式应该有效:#ifndefLRU_H#defineLRU_H#include#includeclassLRU{public:LRU();//defaultconstructorLRU(int);//constructorwithargument~LRU();//destructor//Methods//voidenqueue(int);//adddatumtothequeuevoiddequeue();//removedatumfromthequeuevoidreplace();/