0

为什么我收到一条错误消息:

  1. 错误 C2668:“max”:对重载函数的模糊调用
  2. 错误 C2780:“const T &max(const T &,const T &,const T &)”:需要 3 个参数 - 提供了 2 个。

在以下代码中:

template<typename T>
inline T const& max(T const& i, T const& j)
{
  cout<<"Using template with 2 args."<<endl;
  return (i>j) ? i : j;
}

template<typename T>
inline T const& max(T const& i, T const& j, T const& k)
{
  cout<<"Using template with 3 args."<<endl;
  return max(max(i,j),k);
}

void main()
{
  cout<< ::max(1,2,3)<<endl;    
}

在调用它之前,我已经定义了 2 参数模板函数。

4

1 回答 1

2

删除using namespace std,因为有std::max,参与搜索,这就是你得到第一个错误的原因。第二个错误只是说,有明确的变体,但他们应该收到 3 个参数。

于 2013-10-23T06:17:56.573 回答