簡體   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