我试图使用运算符方法运行带有模板的程序,即时消息得到一个编译器错误,告诉我“从此处实例化”,并且无法转换为Temps<double>' to double'作为回报​​,当我调用运算符函数时,问题就开始了码..

    template <class T>
class Temps
{
 private:
 T a;

 public:
 Temps()
 {
 }
 Temps(T b)
 {
   a=b;
         }
 T operator<(Temps c)
 {
   if (a < c.a)
   {
      return *this;
   }
   return c;
 }
 T operator>(Temps c)
   {
      if (a > c.a)
      {
         return *this;
      }

      return c;
   }

};

int main()
{

    double d1 = -9.002515,d2=98.321,d3=1.024;

    Temps<double>mag(d1);
    Temps<double>lag(d3);
    Temps<double>tag;
    tag=mag < lag;

    system("pause");
    return 0;
}

最佳答案

您的<>函数返回一个T,但是您正在尝试返回一个Temps<T>。您可能要返回的是ac.a。但是<>的正常语义是返回bool,因此您可能想为a < c.a返回<

bool operator <(Temps c) { return a < c.a; }


>类似。

10-06 01:54