如何使用另一个类的重载函数运算符(operator())

How to use overloaded function operator (operator()) of another class?

本文关键字:运算符 operator 函数 重载 何使用 另一个      更新时间:2023-10-16

这是包含重载函数运算符的类:

template < typename KeyType=int >
class Less {
  public:
    bool operator()(const KeyType &a, const KeyType &b) const { return a < b; }
  };

我该如何使用这个?这个类是在一个标头中指定的,该标头还包含堆ADT的类规范。我正试图在我的堆ADT的一个成员函数中使用它,但不确定语法。我认为它将如下:

if(Less<KeyType>::(param1, param2)){
...

但编译器给了我一个错误:expected unqualified-id before '(' token

它确实是这样工作的:

if(Less<KeyType>::operator()(param1, param2)){
...

但必须有一种方法来以另一种不那么杂乱的方式使用它。如果我想让它看起来像这样,我一开始就不会让运算符过载,只会让它成为一个典型的函数。

在问这个问题之前,我试着对这个问题进行了一些研究,但很难找到这么具体的答案。我的搜索不断引导我进入不同的主题。

此运算符是一个非静态成员函数。所以你需要创建一个类型为Less的对象来调用它

if ( Less<>()( param1, param2 ) ) { /*...*/ }

if ( Less<SomeType>()( param1, param2 ) ) { /*...*/ }
相关文章: