我尝试使用运算符&lt;运行带有模板的程序,&GT;方法,我得到一个编译错误告诉我“从这里实例化”和无法转换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;
}
答案 0 :(得分:6)
您的<
和>
函数返回T
,但您尝试返回Temps<T>
。您可能希望返回的内容是a
或c.a
。但<
和>
的正常语义是返回bool
,因此您可能希望为a < c.a
返回<
:
bool operator <(Temps c) { return a < c.a; }
类似于>
。