如何使用另一个类的重载函数运算符(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 ) ) { /*...*/ }
相关文章:
- 运算符重载:"operator+"必须采用零个或一个参数
- "operator()"在重载运算符方法中是什么意思,在priority_queue(STL)中用作C++中的比较器?
- 从 std::ostream 重载 << 运算符时,为什么编译器会给出"too many parameters for this operator function"错误?
- 为什么当"::"的行为不像运算符时被称为'scope resolution operator'?
- 如何使用 boost/operator.hpp 自动生成 == 运算符?
- 在命名空间内的类中使用带有运算符重载的字符串流时"no match for ‘operator>>’"
- c operator()括号 - 运算符type()vs type operator()
- 运算符重载错误"no match for operator error"
- 为什么逗号运算符在运算符[]中打电话给操作员[],而不是在Operator()内部调用
- oStream::operator<< 在 shared_ptr 中无法使用运算符>
- 从具有运算符重载的模板化类继承。'operator*'的不明确重载
- 错误:'operator<<'和"运算符>>"不匹配。请帮忙?
- 与"std::运算符..."中的'operator<'不匹配。这是什么意思?
- 与"std::运算符"中的'operator <<'不匹配<<
- 模板化重载运算符的编译错误"No global operator found"
- C++ XCode 中的错误:在定义运算符 * 时"no viable overloaded operator *=" *= 已经过测试并且正常运行
- 在 Linux 中编译时,“与 'std::operator<<' 中的'运算符<<'不
- 在类中实现一元减法、取反、减运算符"operator-"
- 如何将两个字节*(秒块)与运算符连接起来'secblock<T, A>::operator+='
- 如何使用另一个类的重载函数运算符(operator())