如何使我的模板仅需要绝对必要的功能

时间:2016-05-28 21:11:11

标签: c++ templates operator-overloading

对不起这里的新海报,真的无法解释我的问题。也提前为礼仪中的任何违规行为道歉。我正在研究课堂上的模板化。我对它进行了两次测试,但是我没有通过第三次测试:这个类提供了一组最小的操作,as       这样,代表了你的MiniMax类的测试       要求其数据支持比绝对更多的功能       必要的。

template <class Data>
void MiniMax<Data>::observe (const Data& t)
{
  if (count == 0)
    min = max = t;
  else
    {
      if (t < min)
    min = t;
      if (t > max)
    max = t;
    }
  ++count;
}

if(t>max)行没有匹配运营商&gt;在编译期间。如何更改模板以使其不需要&gt;要在用户定义的类中实现?在此作业中,我只能编辑模板而不能编辑任何测试驱动程序。

1 个答案:

答案 0 :(得分:1)

正如@Anthony Sottile在评论中所说,最简单的方法是切换操作数的位置并更改运算符,将t > max更改为max < t。这会重复使用运算符并仍然执行相同的操作。

更改后,您的代码将如下所示:

if (count == 0)
   min = max = t;
else
{
    if (t < min)
        min = t;
    if (max < t) // <-- Difference Here
        max = t;
}
++count;