[英]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.