繁体   English   中英

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

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

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

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 ) ) { /*...*/ }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM