gpt4 book ai didi

c++ - 使用模板的运算符重载

转载 作者:太空宇宙 更新时间:2023-11-04 15:51:05 25 4
gpt4 key购买 nike

我尝试使用运算符 < ,> 方法运行带有模板的程序,我收到一个编译器错误,告诉我“从这里实例化” 并且无法转换 Temps<double>' to double' in return ,当我调用运算符函数时问题就开始了 这是代码..

    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; }

类似于 > .

关于c++ - 使用模板的运算符重载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8176475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com