【发布时间】:2020-06-13 15:05:29
【问题描述】:
我目前正在参加一个在线 C++ 课程来填补我失业期间的时间,并且我有一个关于返回局部变量地址的问题。我意识到这不是推荐的做法,我正在寻找我正在尝试做的事情的替代解决方案(返回数据以复制到我的对象“co”,这是一个类 Coord 对象)。顺便说一句……该程序就结果而言是有效的。但它确实收到警告 C4172“返回局部变量或临时地址的地址......”。你能帮帮我吗?
这里是细节:在我的作业程序中,我有一个函数返回局部变量 Coord co 的地址(Coord 是我构造的具有两个 int 字段的类......显然......坐标)。我的目标是使用 Coord 复制构造函数通过该局部变量的地址复制数据。
//调用程序声明类Coord的对象co如下
Coord co;
//调用程序可以在几个地方调用函数requestMove()。 //这里是调用之一
co = bd.requestMove(pHuman);
//requestMove()的签名是
const Coord& requestMove(Player&);
//被调用函数requestMove()有一个本地坐标对象nodeAddress,它填充nodeAddress。返回语句为:
return nodeAddress;
欢迎提出意见和建议。非常感谢。
【问题讨论】:
-
根本不允许返回对局部变量的引用。为什么不通过复制返回
Coord?所以签名是Coord requestMove(Player&); -
按值返回,RVO 将使其与按引用返回一样高效
-
我只是在学习如何使用 Stack Overflow ...所以我将在这里输入并让您知道我正在接受所有内容(您的所有答案)并将到达今天晚些时候致力于解决方案/更新。谢谢,这么快就回复了。
标签: c++