函数定义中的成对变量 我是C++新手,试图把C++程序翻译成Python。我对以下代码的语法感到困惑: void函数(无符号(*f)(无符号st,无符号hqid))常量{ if(f(st,hiddenControlBitId)){ //代码在这里 } }

函数定义中的成对变量 我是C++新手,试图把C++程序翻译成Python。我对以下代码的语法感到困惑: void函数(无符号(*f)(无符号st,无符号hqid))常量{ if(f(st,hiddenControlBitId)){ //代码在这里 } },c++,syntax,C++,Syntax,有人能指出将无符号(*f)(无符号st,无符号hqid)作为参数传递是什么意思吗 顺便说一句,我确信这与将pairstd::pair f作为参数传递不同,因为尝试使用pair调用函数会产生编译错误调用时没有匹配的函数,这意味着两个(无符号)整数的函数返回另一个整数。对于这类事情,有很多方法可以解释C臭名昭著的语法。它意味着两个(无符号)整数的函数返回另一个整数。对于类似的事情,有很多方法可以解释C臭名昭著的语法 unsigned(*f)(unsigned st, unsigned hqid)

有人能指出将
无符号(*f)(无符号st,无符号hqid)
作为参数传递是什么意思吗


顺便说一句,我确信这与将pair
std::pair f
作为参数传递不同,因为尝试使用pair调用函数会产生编译错误
调用时没有匹配的函数
,这意味着两个(无符号)整数的函数返回另一个整数。对于这类事情,有很多方法可以解释C臭名昭著的语法。

它意味着两个(无符号)整数的函数返回另一个整数。对于类似的事情,有很多方法可以解释C臭名昭著的语法

unsigned(*f)(unsigned st, unsigned hqid)
这里的
f
是一个指向一个函数的指针,该函数有两个参数,都是无符号类型,并返回无符号整数。可以完全省略
st
hqid

用法示例:

如果您有这样一个功能,例如:

unsigned foo(unsigned a, unsigned b)
{
   return a + b;
}
然后您可以像这样调用
函数
(我假设这是一个方法,因为
常量
):

这里的
f
是一个指向一个函数的指针,该函数有两个参数,都是无符号类型,并返回无符号整数。可以完全省略
st
hqid

用法示例:

如果您有这样一个功能,例如:

unsigned foo(unsigned a, unsigned b)
{
   return a + b;
}
然后您可以像这样调用
函数
(我假设这是一个方法,因为
常量
):


function
是一个类的
const
方法(
const
不能应用于非类函数),它以单个参数
f
作为输入

f
是指向非类函数的指针,该函数将2个
无符号
参数作为输入,并返回一个
无符号

例如:

unsigned addThem(unsigned st, unsigned hqid)
{
    return st + hqid;
}

someObj.function(&addThem);

function
是一个类的
const
方法(
const
不能应用于非类函数),它以单个参数
f
作为输入

f
是指向非类函数的指针,该函数将2个
无符号
参数作为输入,并返回一个
无符号

例如:

unsigned addThem(unsigned st, unsigned hqid)
{
    return st + hqid;
}

someObj.function(&addThem);
在这种情况下,
function()
是某个类的成员函数,该类接受单个参数,该参数是指向一个函数(名为
f
)的指针,该函数接受两个类型为
无符号
,并且还返回一个
无符号

如果
foo()
是定义为的函数

unsigned foo(unsigned x, unsigned y)
{
      return x + y;    //   some arbitrary operation on the arguments
}
如果
s
是将
function()
作为成员函数的类的实例,则

s.function(foo);
将调用函数
foo()
function()
规范中的
const
表示对象
s
在逻辑上没有改变

在这种情况下,
function()
是某个类的成员函数,该类接受单个参数,该参数是指向一个函数(名为
f
)的指针,该函数接受两个类型为
无符号
,并且还返回一个
无符号

如果
foo()
是定义为的函数

unsigned foo(unsigned x, unsigned y)
{
      return x + y;    //   some arbitrary operation on the arguments
}
如果
s
是将
function()
作为成员函数的类的实例,则

s.function(foo);

将调用函数
foo()
function()
规范中的
const
意味着对象
s
在逻辑上没有改变。

我确信不是这种情况,因为我试图用一对调用函数,这只会引发编译错误。但是非常感谢这个网站@taper他的答案可能没有最好的措辞,但他是对的。@taper它是两个单独传递的不同参数,而不是作为单个
我确信不是这种情况,因为我尝试使用对调用函数,这只会给我带来编译错误。但是非常感谢这个网站@taper他的答案可能没有最好的措辞,但他是对的。@taper这是两个单独传递的不同参数,而不是作为单个