首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

下面的代码有有关问题吗?一直编译通不过

2014-01-14 
下面的代码有问题吗?一直编译通不过。请帮忙看下下面的代码哪里错了,我是用了函数模板,运行的时候一直报警:

下面的代码有问题吗?一直编译通不过。
   请帮忙看下下面的代码哪里错了,我是用了函数模板,运行的时候一直报警:对重载函数的调用不明确。

#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类型是没有<运算的吧。
[解决办法]
文件名搞个英文或拼音的也好啊,搞个汉字有点不习惯....下面的代码有有关问题吗?一直编译通不过
[解决办法]

引用:
Quote: 引用:

Quote: 引用:

template < typename T >
T min ( T &number1, T &number2 )//T min ( T number1, T number2 )
{
T minimum = number1;

if ( number2 < minimum )
minimum = number2;

return minimum;
}
应该这样吧



为什么要加个引用符号呢,我看书上讲的例子居然都没有这个。。。


这种情况是不需要加&的,加&传进去会修改它的值,如果不想修改它的值就可以传const T&
[解决办法]
我用vs2008编译了没问题,不清楚为什么会出现这种情况...
[解决办法]
实在不行建立一个新项目,然后将源文件拷进去,看看行不行。如果能编译通过的话,那就不要再去管了。
[解决办法]
用VS2010编译,修改以下代码:
①模板函数名修改
②头文件名修改为英文

编译结果:通过
※写代码一定要养成好的编码规范。
[解决办法]
和STL里的min重名了而已,换一个就好了。
[解决办法]
lz STL中也有类似的函数名,把你自己的函数名改一下试试
另外,不需要加引用
[解决办法]
引用:

代码没错,函数名换一个,不要跟全局的同名

正解,min是VC保留的关键字,你把min改为Min就可以了

热点排行