下面的代码有问题吗?一直编译通不过。
请帮忙看下下面的代码哪里错了,我是用了函数模板,运行的时候一直报警:对重载函数的调用不明确。
#include<iostream>
using namespace std;
#include"min函数模板.h"
int main()
{
int int1, int2;
cout << "Enter two int number: " << endl;
cin >> int1 >> int2;
cout << min ( int1, int2 );
double double1, double2;
cout << "Enter two double number: " << endl;
cin >> double1 >> double2;
cout << min ( double1, double2 );
char char1, char2;
cout << "Enter two char number: " << endl;
cin >> char1 >> char2;
cout << min ( char1, char2 );
return 0;
}
//下面的min函数模板写在头文件里面的!
template < typename T >
T min ( T number1, T number2 )
{
T minimum = number1;
if ( number2 < minimum )
minimum = number2;
return minimum;
} 其实我也是一知半解,就感觉是这样的,嘿嘿。
[解决办法]
并不需要加引用符号&,因为你只是要求最小值而已,并不是要进行换序等改变参数的操作;至于为何会编译不通过,我还没找出原因。
[解决办法]
你的代码一共有三部分(是那三部分就不用我说了吧?),你可以进行注释,一部分一部分地编译运行——这个是常见的方法。我猜那个char类型是没有<运算的吧。
[解决办法]
文件名搞个英文或拼音的也好啊,搞个汉字有点不习惯....
[解决办法]
这种情况是不需要加&的,加&传进去会修改它的值,如果不想修改它的值就可以传const T&
[解决办法]
我用vs2008编译了没问题,不清楚为什么会出现这种情况...
[解决办法]
实在不行建立一个新项目,然后将源文件拷进去,看看行不行。如果能编译通过的话,那就不要再去管了。
[解决办法]
用VS2010编译,修改以下代码:
①模板函数名修改
②头文件名修改为英文
编译结果:通过
※写代码一定要养成好的编码规范。
[解决办法]
和STL里的min重名了而已,换一个就好了。
[解决办法]
lz STL中也有类似的函数名,把你自己的函数名改一下试试
另外,不需要加引用
[解决办法]
代码没错,函数名换一个,不要跟全局的同名
正解,min是VC保留的关键字,你把min改为Min就可以了