这是包含重载函数运算符的类:
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)){
...
但必须有一种方法以另一种不那么混乱的方式使用它。如果我希望它看起来像这样,我一开始就不会超载操作员而只会使它成为一个典型的功能。
我在这里问之前已经尝试过对这个问题进行一些研究,但要找到这个具体的答案有点困难。我的搜索引导我不同的主题。
答案 0 :(得分:1)
此运算符是非静态成员函数。因此,您需要创建一个Less
类型的对象来调用它。例如
if ( Less<>()( param1, param2 ) ) { /*...*/ }
或者
if ( Less<SomeType>()( param1, param2 ) ) { /*...*/ }