簡體   English   中英

C ++中的運算符的函數指針

[英]Function Pointer of an Operator in C++

所以我有一個函數,期望函數指針作為輸入,並且其原型如下所示:

int function(int (*op)(int, int));

我想知道是否可以為該函數指針傳遞運算符。 具體來說,此內置運算符:

int operator|(int, int);

我已經試過了:

function(&(operator|));

並得到了這樣的錯誤:

error: no matching function for call to 'function(<unresolved overloaded function type>)'

我已經試過了:

function(&(operator|(int, int)));

並得到了這樣的錯誤:

error: expected primary-expression before 'int'

我已經在文檔中尋找了這種情況,但是我得到的是有關運算符“ operator&”的地址的信息,而不是有關運算符地址的信息。

編輯:

參見上一個問題在C ++中顯式調用原始運算符

內置運算符| 需要兩個int並返回int值,無法通過符號operator| 例如,以下內容無法編譯

int a = operator|(2,3);

由於不能將運算符用作函數,因此該標准提供了一系列與運算符相對應的函子。 其中最著名的是std::less ,它是排序排序,集合和映射的默認模板參數。

完整列表可在functional標題中找到。 最接近您的需求的是std::bit_or

不幸的是,這些都是使用operator()而不是函數作為模板類實現的,因此它們不適用於您的特定用例。 它們更適合模板。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM