Gar*_*ghi 15 c++ visual-studio-2010
我正在关注复数C++课程,其中包含以下代码:
#include <iostream>
template <class T>
T max(T& t1, T& t2)
{
return t1 < t2 ? t2 : t1;
}
int main()
{
std::cout << "Max of 33 and 44 is " << max(33, 44) << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我键入了这段代码,但与课程代码不同,我收到一条错误消息:
C2664: 'max' : cannot convert parameter 1 from 'int' to 'int &'
Run Code Online (Sandbox Code Playgroud)
本课程中的代码是用Visual Studio Express 2010编写的,而我的代码是用Visual Studio Ultimate 2010编写的.
编辑
感谢所有人(甚至是凯特格雷戈里本人)提供答案并清理所有内容.
小智 32
因为文字(和一般的rvalues)不能通过非const引用传递(因为如果被调用者可以改变它们就没有意义).通过值传递或通过const引用:
template <class T>
T max(const T& t1, const T& t2)
{
return t1 < t2 ? t2 : t1;
}
Run Code Online (Sandbox Code Playgroud)
要么
template <class T>
T max(T t1, T t2)
{
return t1 < t2 ? t2 : t1;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24819 次 |
| 最近记录: |