gpt4 book ai didi

c++ - 无法将 int (*(int))(int) 转换为 int (*(int))(int)

转载 作者:行者123 更新时间:2023-11-27 22:33:05 27 4
gpt4 key购买 nike

我正在尝试了解返回指向函数的指针的函数,在我尝试编译代码后,它给了我这种错误:

cannot convert int (*(int))(int) to int (*(int))(int) in assignment.

我知道这两个 int (*(int))(int) 是同一件事,但为什么会出现此错误?

我正在使用 g++ 编译这段代码

int sum(int i){
return i+i;
}
int (*fp)(int) = sum;

int (*someFunc(int))(int a){
return fp;
}

int main(){
int i = 1;

int (*fp2(int))(int);

fp2 = someFunc;

return 0;
}

我希望 fp2 将是指向 fp 变量的指针,但它只是给我一些错误。

感谢任何帮助,谢谢

最佳答案

您将 fp2 定义为一个函数本身,而不是一个指向函数的指针,这意味着您不能给它赋值。您需要使它成为指向函数的指针:

int (*(*fp2)(int))(int);
fp2 = someFunc;

更好的是,使用 typedef 这样代码就不会 super 困惑:

typedef int func1(int);
typedef func1 *func2(int);

int sum(int i) {
return i+i;
}

func1 *fp = sum;

func1 *someFunc(int a) {
return fp;
}

int main() {
int i = 1;
func2 *fp2 = someFunc;
return 0;
}

关于c++ - 无法将 int (*(int))(int) 转换为 int (*(int))(int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58490804/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com