C++出现的问题总结

1.[Error] ‘nullptr’ was not declared in this scope

在这里插入图片描述

nullptr是可以使用在C++,里面的关键字。但是由于编译器的问题,会导致出错,编译器必须要支持C++11,如果编译器不支持,请升级你的编译器或修改程序代码避开C++11中的才有的内容。

解决方法我也不太清楚,不过可以去看看steaven lee的方法
在这里插入图片描述

2.[Error] conversion from 'SepStack* to non-scalar type ‘SepStack’ requested

翻译一下:从‘SepStack*到非标量类型’SepStack‘的转换请求

我打的是关于链栈的一个代码,如图所示:

在这里插入图片描述

报的错误是:

在这里插入图片描述

我在网上学了教程,尝试改了一下,不报错了。
在这里插入图片描述

改法如下:

在这里插入图片描述

虽然不报错,但是还是运行不了,我开始调试,出现了这个标志

在这里插入图片描述

从字面上理解
SIGSEGV是是当一个进程执行了一个无效的内存引用,或发生段错误时发送给它的信号。
所以这段话的意思是程序接受一个无效的指针地址,Segmentation fault即是提示我们去注意定义指针的符号。

为什么呢?我的指针应该没错呀,我去检查代码发现错哪了:
在这里插入图片描述

家人们,这是赋值,注意这个问题哦,别错在这个低级地方。

在这里插入图片描述

在这里插入图片描述

3.[Error] invalid use of template-name ‘Node’ without an argument list

这个是我在写模板代码然后调用时出现的问题

在这里插入图片描述

很明显需要找到Node这个结构体:

在这里插入图片描述

我们要知道,这个问题意思是: [Error]没有参数列表的模板名称‘Node’无效使用。为什么会有这样的报错呢?

你要是明白模板类不是具体的类型,只有和具体的模板参数结合才是具体的类型,就会改动了。把这个结构体改成确切的就OK咯。

在这里插入图片描述

如果这样的话,其他用这个结构体的地方也要改动:

在这里插入图片描述

4.[Error] base operand of '- > ’ has non-pointer type ‘Data’[Error]

先翻译一下:‘->’的基操作数具有非指针类型的‘data’

是什么意思呢?

我们看看代码:

在这里插入图片描述

data我也是结构体,但是使用时node一般对应指针类型。

在这里插入图片描述

咱的意思是需要注意 “.”以及”->”之间的区别,”.”适用于结构体变量,”->”适用于结构体指针变量!!!!

5.[Error] '> > ’ should be '> > ’ within a nested template argument list

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ik7hiqR2-1664708882145)(C:\Users\Sternstunde\AppData\Roaming\Typora\typora-user-images\image-20220912103135211.png)]

这个错误我在写STL时遇见的,错的点在于编译器,使用C++11之前的编译器会将“>>"看成移位符号。

我们需要在“>>"中间夹入一个空格即可。

嘿嘿嘿,简单吧,这些问题都是我在学习数据结构时遇到的,分享给大家,如对你有用,请多多支持,点赞鼓励٩( ‘ω’ )و 蟹蟹!
在这里插入图片描述

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C++ 中的拷贝构造函数是一种特殊的构造函数,用于在创建一个对象时,以另一个对象作为参数来初始化它。拷贝构造函数的声明如下: ```cpp class MyClass { public: MyClass(const MyClass& other); }; ``` 其中,other 是要拷贝的对象的引用。拷贝构造函数通常用于以下几种情况: 1. 通过值传递对象时,会调用拷贝构造函数来创建一个新的对象。 2. 在函数返回一个对象时,会调用拷贝构造函数来创建一个副本。 3. 在一个对象初始化另一个对象时,会调用拷贝构造函数。 在 C 语言中,没有拷贝构造函数的概念,但可以通过自己实现一些函数来模拟拷贝构造函数的功能。例如: ```c typedef struct { int x; int y; } Point; void point_copy(Point* dest, const Point* src) { dest->x = src->x; dest->y = src->y; } Point point_create(int x, int y) { Point p; p.x = x; p.y = y; return p; } int main() { Point p1 = point_create(1, 2); Point p2; point_copy(&p2, &p1); return 0; } ``` 在这个示例中,我们定义了一个 Point 结构体,并通过 point_create() 函数来创建一个 Point 对象。我们还定义了一个 point_copy() 函数,用于将一个 Point 对象拷贝到另一个对象中。在 main() 函数中,我们通过调用 point_copy() 函数来拷贝 p1 对象到 p2 对象中。 需要注意的是,在 C 语言中,拷贝构造函数的实现需要自己手动编写,而且需要特别注意内存管理,避免出现内存泄漏等问题。在 C++ 中,拷贝构造函数由编译器自动生成,可以方便地实现对象的拷贝。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值