【发布时间】:2017-08-21 08:02:26
【问题描述】:
我刚开始使用 c++,对模板了解不多,我制作了一个模板函数,但在 Visual Studio 中收到此错误:
//没有函数模板实例“max”匹配参数列表参数类型是(int, int) //C2664'T max(T &,T &)': 无法将参数 1 从 'int' 转换为 'int &'
#include "stdafx.h"
#include <iostream>
using namespace std;
template <class T>
T max(T& t1, T& t2)
{
return t1 < t2 ? t2 : t1;
}
int main()
{
cout << "The Max of 34 and 55 is " << max(34, 55) << endl;
}
编译错误在cout的max中发现
谢谢!
【问题讨论】:
-
删除
using namespace std;并按值传递参数。 -
发布有关构建错误的问题时,请将实际错误完整、完整且未经修改地复制粘贴到问题正文中。它当然应该包括可能的信息说明。
-
当然,这段代码处于sin状态:
using namespace std;表示你很可能在全局命名空间中有标准库对std::max的定义以及你自己对@987654325的定义@。这不是导致这个特殊问题的原因,但它最终会咬你。