
C++创建对象时报错:引发了异常: 读取访问权限冲突。 p2.m_Height 是 nullptr。
发布日期:2021-05-18 09:16:18
浏览次数:24
分类:精选文章
本文共 717 字,大约阅读时间需要 2 分钟。
今天在做C++项目时遇到了一个棘手的问题。原本项目运至某个测试函数时,程序会报错,提示“p2.m_Height 是 nullptr。”,指向第38行代码。这个问题看起来挺简单的,但经过一番调试,发现问题并不在表面。
首先,错误信息提到了p2.m_Height为null,这意味着在尝试访问m_Height时,它为null。这让我联想到指针未被正确初始化的问题。我需要检查在构造p2时,m_Height是否被正确初始化,特别是在使用某个类的拷贝构造函数时,是否某些成员变量未被正确复制。
我尝试在使用拷贝构造函数时,发现拷贝构造函数的实现有问题。拷贝构造函数的目的是使以另一个对象为起点创建新的对象时,正确地拷贝所有成员变量,而不是直接使用引用或者指针。由于我的拷贝构造函数没有正确处理m_Height的指针,导致在复制过程中没有正确初始化或进行适当的处理,于是当我尝试访问m_Height时,结果是一个不合法的null指针。
于是,我开始审查拷贝构造函数的实现。发现在拷贝过程中,某些条件判断和初始化步骤被遗漏了。特别是对于m_Height这类指针类型的成员变量,没有正确进行归并或初始化。修正后,我确保在构造函数中,如果有必要的时候,能够正确地初始化这些指针,防止出现未初始化指针的情况。
通过测试,我发现问题确实出在拷贝构造函数上。将拷贝构造函数注释掉,并重新编译项目,问题得以解决。所以,总结一下,拷贝构造函数的错误导致了这个问题,注释它就可以通过编译。同时,这也提醒了我在编写C++类的构造函数时,特别是对带有指针或其他复杂类型的成员变量的类,要仔细检查拷贝构造函数的实现,确保每一项都被正确处理,避免出现指针未初始化等问题。
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年04月30日 14时31分56秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
excel中最常用的30个函数_Excel玩转数据分析常用的43个函数!
2023-01-24
flink sql设置并行度_Flink 参数配置和常见参数调优
2023-01-24
go 字符串替换_Go 每日一库之 quicktemplate
2023-01-24
hive 建表_sqoop的使用之导入到hive和mysql
2023-01-24
hp工作站z8装Linux,惠普Z8G4双路最小工作站
2023-01-24
html上传图片直接保存到数据库中,Editor上传图片路径存入数据库中怎么弄?
2023-01-24
html游戏玩不了,WinXP网页游戏玩不了怎么办有哪些解决方法
2023-01-24
html转jsp_JSP详解
2023-01-24
iphone打字怎么换行_手持iPhone?你可能并不知道的小技巧!
2023-01-24
jaccard相似度_自然语言处理之文本相似度计算
2023-01-24
java 8 list对象属性判空_java ---- 认识类对象,属性和方法
2023-01-24
java http delete_java积累---HttpDelete请求方式传递参数
2023-01-24
java swing数据库,如何在Java swing中查看数据库结果集
2023-01-24
java xmpp 群聊,使用XMPPFramework openfire创建聊天室
2023-01-24
java 反义_java中一些常用的英语
2023-01-24