【发布时间】:2013-06-25 14:23:40
【问题描述】:
所以我有一个函数,它需要一个函数指针作为输入,它的原型是这样的:
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&) 的信息,而不是关于运算符地址的信息......
编辑:
查看上一个问题 Calling primitive operator-functions explicitly in C++
【问题讨论】:
-
在函数调用中消除
&有效吗? -
@SuvP 为什么要这样?该函数不存在,因此无法获取其地址。
-
@JamesKanze 我以为他超载了。
-
@SuvP 他不能。除非至少有一个操作数是用户定义的类型,否则不能重载运算符。
标签: c++ operators function-pointers