gpt4 book ai didi

c++在if语句中分配引用变量

转载 作者:行者123 更新时间:2023-11-30 04:52:17 24 4
gpt4 key购买 nike

如何根据 if 语句分配引用变量?

例如,以下示例不起作用,因为“smaller”没有 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 语句实现引用赋值,但如果我不能使用它怎么办?

最佳答案

使用函数:

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 在你的问题中,我保持这样。

编辑:

在 C++ 11 及更高版本中,您可以使用随时调用的 lambda:

int main() {
int x = 1;
int y = 2;
int & smaller = [&]() -> int & {
if(x < y)
{
return x;
}
else if (x > y)
{
return y;
} else {
// what do you expect to happen here?
return x;
}
}(); /* should work now */
}

关于c++在if语句中分配引用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54503278/

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