C++ 核心指南:生命周期 - 为什么以下代码会触发警告?

问题描述

在 Visual Studio 2019 中使用“C++ 核心检查生命周期规则”编译以下代码时,我收到“警告 C26486:不要将可能无效的指针传递给函数。参数 0 '@vA' in调用 'std::vector >::push_back' 可能无效 (lifetime.3) .":

struct XY { int c1; };
vector<XY> vA,vB;
vA.push_back({1});
vB.push_back(vA.at(0));

警告消失,如果我用一个简单的整数替换结构类型,或者如果我将 vA.at(0) 分配给一个临时变量,然后将变量推回到 vB。这是为什么?另外,这个代码首先是如何“不安全”的?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)