gpt4 book ai didi

c++ - 如何使用单个 return 语句返回对变量的引用

转载 作者:太空宇宙 更新时间:2023-11-04 14:43:14 25 4
gpt4 key购买 nike

考虑以下代码段。

MyType_t& Variable(int i) {
if (i == 0) {
return MyVariable0;
}
if (i == 1) {
return MyVariable1;
}
return MyDefaultVariable;
}

这将返回对变量的引用,然后可以对其进行修改。

Variable(1) = 10;

但是,我们的编码标准要求使用单点返回。我将如何做到这一点?出于某种原因,以下内容似乎只复制值(因此不返回对根变量的引用),即使我已经验证了单步执行代码,它将 var 设置为适当的变量。这对于指针来说很简单,但我就是无法获得正确的引用。

MyType_t& Variable(int i) {
MyType_t& var = MyDefaultVariable;
if (i == 0) {
var = MyVariable0;
}
if (i == 1) {
var = MyVariable1;
}
return var;
}

注释

返回的变量具有全局范围(在嵌入式系统上)。

该函数用作类内部的便捷方法,用途/范围非常有限。

最佳答案

您的引用绑定(bind)到 MyDefaultVariable,之后您无法修改它,因为它就是这样工作的。您的 var = MyVariable0; 有效地调用了 MyDefaultVariable 的复制运算符,这导致了您观察到的行为。

如果您想避免在此处使用三元运算符,您可以使用接近您建议的内容,但使用稍后在 return 语句中取消引用的指针。

MyType_t& Variable(int i) {
MyType_t* var = &MyDefaultVariable;
if (i == 0) {
var = &MyVariable0;
}
if (i == 1) {
var = &MyVariable1;
}
return *var;
}

关于c++ - 如何使用单个 return 语句返回对变量的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52537096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com