给常量赋值,居然给报这个错 C2280 “TRoleObj::TRoleObj(void)”: 尝试引用已删除的函数

12 篇文章 2 订阅
11 篇文章 0 订阅

遇到个问题 ,先描述下情况,
昨晚能编译通过,但偶尔出现崩溃,今早准备找下错误点,结果报这个,闻所未闻:
“错误 C2280 “TRoleObj::TRoleObj(void)”: 尝试引用已删除的函数”

百度了一大堆,和我的问题都不一样,而且昨晚都能编译通过能运行的!

最后自己审查代码才发现错误,给结构体里常量赋值了!
然后去掉const关键字,编译通过了,然后又加上const,惊奇的发现报错变两个了,而且准确了:

错误 C3892 “tRoleObj”: 不能给常量赋值 //【卧槽~早这么准我就不会为此浪费时间了嘛- -!哎】
错误 C2280 “TRoleObj::TRoleObj(void)”: 尝试引用已删除的函数

那么问题来了!

为什么会出现同一个错误两种报错?而且昨天还没报今天却报?
应该与编译器查错机制有关,它应该又两种审查,第一,局部修改的代码审查,就是刚写的修改的代码审查下,报错就准确;第二就是全局代码的审查,报错就不准确,而且这个全局审查应该不是时时刻刻的,这就是解释了同样代码昨天能通过编译,今天就不行了,因为今天全局查错。

结论:
全局查错的时候,编译器可能报错不准确(给常量赋值第一次给我报 “尝试引用已删除的函数”)
所以有时候不能完全依赖编译器
要避免再次发生同样的事情,谨记,提升编程功底,时常仔细认真,不犯基础错误为妙

2021-2-6小计。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值