我把这个例子直出一本书(Sams Teach Yourself C++ in One Hour a Day)的:为什么我不能从这个模板函数返回一个引用?
// Get the maximum of two values
template <typename objectType>
objectType& GetMax(const objectType& value1, const objectType& value2)
{
if (value1 > value2)
return value1;
else
return value2;
}
本质上讲,它是一个非常冗长的书面模板函数找到任何类型的2个值之间的最大值。
我试图使用功能如下:
// Test the Max function
int x_int = 25;
int y_int = 40;
int max_int = GetMax(x_int, y_int);
cout << "max_int: " << max_int << endl;
double x_double = 1.1;
double y_double = 1.001;
double max_double = GetMax(x_double, y_double);
cout << "max_double: " << max_double << endl;
然而,当我试图编译和运行代码我得到以下错误:
错误1个错误C2440:“回归':不能转换从 'const int的' 到 '廉政&'
错误2错误C2440: '回归':不能从转换 'const int的' 到 '廉政&'
错误3错误C2440:“回归”:不能从“常量双”转换为“双&”
错误4错误C2440:“回归”:不能从“常量双”转换为“双&”
如果我只是从函数的返回类型删除&
它会编译并成功执行。
为什么我不能从这个函数返回一个引用?这本书是错的,还是有我失踪的东西?
你应该返回'const&' – JSF