使用模板重载操作符
Operator overloading with templates
我试图使用操作符<方法,我得到一个编译器错误告诉我>"从这里实例化"和不能转换Temps<double>' to
双'在返回,问题开始时,我调用操作符函数这里的代码..
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>
。您可能想要返回的是a
或c.a
。但是<
和>
的正常语义是返回bool
,因此您可能希望为<
返回a < c.a
:
bool operator <(Temps c) { return a < c.a; }
与>
类似
相关文章:
- 重载操作符+:表达式必须是整型或无作用域枚举类型
- 重载操作符
- 如何重载操作符==外模板类使用友元函数
- 重载*操作符,使其在左右两边都工作
- 重载操作符<对于非随机迭代器
- 在c++中重载操作符的时间和原因
- 如何在c++中重载=操作符来通过引用进行复制
- 如何在c++中获取定义为友元的重载操作符的地址
- 使用重载操作符的文件操作表达式没有给出预期的结果
- 重载操作符()
- 重载操作符()并在类内使用
- 类中的重载操作符+
- 定时使用重载操作符
- c++带类的重载操作符
- 用列表容器重载[]操作符
- 重载操作符=
- 任何重载操作符()的静态检测
- 重载操作符以处理类对象
- 在使用另一个类的类中重载操作符==
- 派生类和基类中的重载操作符不同