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

时间:2014-04-09 02:00:06

标签: c++ function operator-keyword scope-resolution

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

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)){
...

但必须有一种方法以另一种不那么混乱的方式使用它。如果我希望它看起来像这样,我一开始就不会超载操作员而只会使它成为一个典型的功能。

我在这里问之前已经尝试过对这个问题进行一些研究,但要找到这个具体的答案有点困难。我的搜索引导我不同的主题。

1 个答案:

答案 0 :(得分:1)

此运算符是非静态成员函数。因此,您需要创建一个Less类型的对象来调用它。例如

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

或者

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