cuốn sách gpt4 ai đã làm

Không thể chuyển đổi int (*(int))(int) thành int (*(int))(int)

In lại Tác giả: Walker 123 Thời gian cập nhật: 27-11-2023 22:33:05 28 4
mua khóa gpt4 Nike

Tôi đang cố gắng hiểu một hàm trả về một con trỏ tới một hàm và sau khi tôi cố gắng biên dịch mã, nó báo cho tôi loại lỗi này:

không thể chuyển đổi int (*(int))(int) ĐẾN int (*(int))(int) trong nhiệm vụ.

Tôi biết hai người này int (*(int))(int) Điều tương tự cũng xảy ra nhưng tại sao tôi lại gặp phải lỗi này?

Tôi đang sử dụng g++ để biên dịch mã này

int tổng(int i){
return i+i;
}
int (*fp)(int) = tổng;

int (*someFunc(int))(int a){
trả lại fp;
}

int chính(){
int tôi = 1;

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

fp2 = someFunc;

trả về 0;
}

Tôi đã mong đợi fp2 là một con trỏ tới biến fp, nhưng nó chỉ gây ra một số lỗi cho tôi.

Đánh giá cao sự giúp đỡ nào, cảm ơn bạn

câu trả lời hay nhất

bạn sẽ fp2 Được xác định là chính hàm chứ không phải là con trỏ tới hàm, có nghĩa là bạn không thể gán giá trị cho hàm đó. Bạn cần biến nó thành một con trỏ tới một hàm:

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

Tốt hơn nữa, hãy sử dụng typedef Bằng cách này, mã sẽ không bị nhầm lẫn:

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

int tổng(int i) {
return i+i;
}

func1 *fp = tổng;

func1 *someFunc(int a) {
trả lại fp;
}

int chính() {
int tôi = 1;
func2 *fp2 = someFunc;
trả về 0;
}

Về c++ - không thể chuyển đổi int (*(int))(int) thành int (*(int))(int), chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/58490804/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress