2
#include <iostream>
using namespace std;

template <class MyType>
MyType GetMax (MyType a, MyType b, MyType c) {
  return std::max(std::max(a, b), c);
}

int main () {
  int a = 5, b = 6, c = 7, d;
  char e [] = "1", f [] = "2", g [] = "3", h; 
  d=GetMax<int>(a,b,c);
  cout << d << endl;
}

错误:没有匹配函数调用“GetMax(char [2], char [2], char [2])”

该程序适用于 int 但我不确定 char 的问题是什么

4

2 回答 2

2

您正在声明 C 风格的字符串,也不char是 s。

如果你想使用GetMaxwith chars 你的代码应该是这样的:

 char e = '1', f = '2', g = '3', h; 
 h = GetMax<char>(e, f, g);

请注意,在这种特殊情况下,编译器可以确定 GetMax 的签名,因此您可以将调用减少为:

 h = GetMax(e, f, g);
于 2013-09-26T21:12:51.960 回答
0

它没有问题char,它有问题char *,也称为“c 样式字符串”。

没有operator<用于 c 风格的字符串 (char *),所以std::max不起作用。您必须自己使用strcmpOR use来实现它std::string

于 2013-09-26T21:12:39.473 回答