考虑以下代码段。
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/