错误C2664:无法将参数1从\'int\'转换为\'int__cdecl *int\'

问题描述

| 在将一个函数作为另一个函数的参数传递时遇到一些麻烦...   错误:错误1错误C2664:“包装器”   :无法从转换参数1   \'int \'到\'int(__cdecl *)(int)\'
int inc( int n )
{
    return n + 1 ;
}

int dec( int n )
{
    return n - 1 ;
}

int wrapper(   int i,int func(int)   )
{
    return func( i ) ;
}   


int main(){

    int a = 0 ;

    a = wrapper(  3,inc( 3 )  ) ;

    return 0 ;

}
    

解决方法

        您正在将函数调用
inc(3)
的结果传递给
wrapper
,而不是所期望的函数指针。
a = wrapper(3,&inc) ;
    ,        您的呼叫传递了一个整数,即呼叫
inc(3)
的返回值,即4。 那不是函数指针。 也许您的意思是:
a = wrapper(3,inc);
这将起作用,并使用参数
3
将a赋给调用
int
的值。     ,        该行:
 a = wrapper(  3,inc( 3 )  ) ;
有效地:
a = wrapper(3,4);
我想你的意思是:
a = wrapper(3,inc);
这会将指向inc()函数的指针作为wrapper()的第二个参数传递。     ,        现在,
wrapper
int
,而指向一个函数的指针取one6ѭ并返回an6ѭ。您正在尝试将其传递给一个int和一个int,因为您不是在向函数传递指针,而是在调用函数并传递返回值(
int
)。为了使您的代码按预期运行(我认为),请将对
wrapper
的调用更改为:
a = wrapper(3,&inc);
    ,        我的程序中出现此错误:
error C2664: \'glutSpecialFunc\' : cannot convert parameter 1 from \'void (__cdecl *)(void)\' to \'void (__cdecl *)(int,int,int)\'
因为我写的方法定义晚于main方法。 当我剪切主要方法并在功能定义之后粘贴它时,错误已消除。     

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...