![](/img/trans.png)
[英]How can i call a operator overloaded member function(or use the operator) from another operator overloading member function in the same class?
[英]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.