我有以下代码:

template <class T>
T GetMax (T a, T b) {
  return (a>b?a:b);
}


int main () {
  int i=51, j=26, k;
  long l=100, m=15, n;
  k=GetMax(i,j);
  n=GetMax(l,m);
  cout << k << endl;
  cout << n << endl;
  return 0;
}

如何更改变量k和n的数据类型,以便它们足够动态以接受返回的值。如果返回值是 double 型,则k和n将自动为 double 型,因此我不必理会传入的是int还是double。

我尝试在网上和我的书中进行搜索,但是没有运气。你能帮我吗?我是模板新手。

最佳答案

在C++ 11中,您可以使用auto:

auto k = GetMax(i,j);
auto n = GetMax(l,m);

从用于初始化kn的表达式中推导出它们的类型。

在C++ 11之前,您需要明确指定类型。但是,由于您知道参数的类型,因此您应该始终能够以某种形式编写类型。

09-16 10:10