primer关于模板的一道习题
为什么编译报错,“T”is ambiguous.
#include <iostream>
using namespace std;
template <typename T>
int compare(const T &v1, const T &v2)
{
if(v1 <v2) return -1;
if(v2 <v1) return 1;
return 0;
}
int main()
{
compare( "hi ", "world ");//这里报错
return 0;
}
[解决办法]
"hi " 类型是const char[3]
"world "类型是const char[6]
类型不匹配,推不出T是什么类型
这样写 compare( "hi ", "world ");就可以通过编译了。
[解决办法]
lann64
是对的,受教了,发现一个理解的误区
文本字符串常量的类型是字符数组,可以用来初始化一个字符指针,但类型不是字符指针