函数定义中的成对变量 我是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这是两个单独传递的不同参数,而不是作为单个对