c++ - 返回的局部变量的地址-可以忽略警告而不会造成损害,但是正确的方法是什么?
问题描述
我有一堂课Particle
:
class Particle {
private:
float x, y, z;
// ...
public:
// ...
float* getPos() {
float p[3] = {x, y, z};
return p;
}
// ...
};
我会这样称呼这个方法:
Particle a = Particle();
// ...
float* pos = a.getPos();
pos[0]
然后使用through引用位置元素pos[2]
。
g++ 会发出标题中所述的警告消息。但功能正是我想要的:返回一个数组。为什么存在警告,是否有“正确”的方法来做到这一点?
解决方案
您不能返回这样的 C 数组,std::array
而是返回:
std::array<float, 3> getPos() {
std::array<float, 3> p = {x, y, z};
return p;
}
你需要包括在内<array>
。
推荐阅读
- jquery - 当我提交谷歌分析代码时,Codeigniter 验证失败
- jira-rest-api - 用于 EXCEL 导出的 JIRA REST API
- django - 一个字段中多个项目的选择字段
- .net-core - Wix 安装程序 - 用于更新 appsettings.json (.net core3.1) 的自定义操作
- python - 如何激活现有的 virtualenv 项目?
- json - 上传 JSON REST API (.Net Core) 的图像和文档是否有默认限制?
- spartacus-storefront - 斯巴达克斯全球面包屑嵌套层次结构
- java - 如何在列表视图中的 LongclickListener 上的变量中存储 Hashmap 值?
- android-studio - Gradle 是否包含在 Android Studio 中?
- javascript - 如何将文本框验证为指定模式