【问题标题】:How can I properly overload the > operator as a template function in C++? Learning template overloading如何正确地将 > 运算符重载为 C++ 中的模板函数?学习模板重载
【发布时间】:2015-04-02 03:51:58
【问题描述】:

我想做一个常规的运算符重载,但使用模板。想象一下:

template <typename Type>
bool operator> (Type &tX, Type &tY)
{
     return (tX.data > tY.data) ? tX : tY;
}

但我希望它适用于任何类或原语。代码有什么问题?

【问题讨论】:

  • 你不能为两个基元重载一个运算符。
  • 看起来很奇怪,您将其中一个对象返回为bool...
  • 你听说过std::greater吗?

标签: c++ function templates overloading


【解决方案1】:

如何正确地将 > 运算符重载为 C++ 中的模板函数?

  1. 您不能为原始类型重载 &gt; 运算符。语言不允许这样做。

  2. 您也不能以任何合理的方式为用户定义的类型重载 &gt; 运算符。通用实现无法知道如何将用户定义类型的一个实例与同一类型的另一个实例进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-15
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 2015-09-15
    • 1970-01-01
    • 1970-01-01
    • 2022-10-01
    相关资源
    最近更新 更多