如何基于if语句分配引用变量?
例如,下面的示例不起作用,因为“更小”的范围不在if语句之外。
int x = 1;
int y = 2;
if(x < y)
{
int & smaller = x;
}
else if (x > y)
{
int & smaller = y;
}
/* error: smaller undefined */
但是,下面的示例也不起作用,因为必须立即将引用分配给对象。
int x = 1;
int y = 2;
int & smaller; /* error: requires an initializer */
if(x < y)
{
smaller = x;
}
else if (x > y)
{
smaller = y;
}
我可以用三元if语句实现引用分配,但是如果我不能使用它呢?
答案 0 :(得分:1)
使用功能
int &foo(int &x, int &y) {
if(x < y)
{
return x;
}
else if (x > y)
{
return y;
} else {
// what do you expect to happen here?
return x;
}
}
int main() {
int x = 1;
int y = 2;
int & smaller = foo(x, y); /* should work now */
}
请注意,在您的情况下,我什至希望foo返回一个const int&
,因为修改标识为较小的值似乎很奇怪,但是您在问题中没有使用它const
,我会这样保存。