【发布时间】:2024-01-19 22:28:01
【问题描述】:
下面的函数定义是否合法?
T& GetMax(const T& t1, const T& t2)
{
if (t1 > t2)
{
return t2;
}
// else
return t2;
}
上面写着: “在返回语句中,编译器会抱怨 t1 或 t2 无法转换为非常量。” 我在这个网站上读到它:http://www.codeproject.com/Articles/257589/An-Idiots-Guide-to-Cplusplus-Templates-Part-1
这是否意味着它是非法的,如果不是还有什么?你能提供使用它的例子吗? 你能给我一些明确的解释吗? 提前致谢
【问题讨论】:
-
那么,你的意思是要返回t1还是t2?您是否尝试过实现并编译它?您看到的错误是什么?
-
下面的函数定义是否合法?这取决于你在函数中做什么。 写的是...写的是在哪里?一些上下文会很好。
-
"下面的函数定义是否合法?" 不,它的点太多了。说真的,如果编译器抱怨 return 语句,向我们展示 return 语句。有关更多指南,请参阅 SSCCE.ORG。
-
我也认为是合法的。但我在我说的网址中读到了它。文章的作者没有提到身体的功能。他没有说函数返回 t1 还是 t2 或其他东西。他只说“在返回语句中,编译器会抱怨 t1 或 t2 不能转换为非常量。”所以我很困惑。
-
@user1308990 你真的读过这篇文章吗?我引用:“你应该注意到了,我没有在传递的两个参数中添加 const。这是必需的;因为函数返回 T 类型的非 const 引用”