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

Kết nối với vị trí được bảo vệ trong lớp dẫn xuất

In lại Tác giả: Hồ Xil Thời gian cập nhật: 2023-11-01 18:26:20 27 4
mua khóa gpt4 Nike

Tuyên bố trong lớp cơ sở trông như thế này:

protected:
void chỉ mụcAll();
void cleanAll();

Trong các lớp dẫn xuất, phần sau không được biên dịch:

chỉ mụcAll(); // Được rồi
connect(&_timer, &QTimer::timeout, this, &FileIndex::indexAll); // LỖI
connect(&_timer, SIGNAL(timeout()), this, SLOT(indexAll())); // OK

我想使用 kết nối Biến thể đầu tiên vì nó thực hiện một số kiểm tra trong thời gian biên dịch. Tại sao lỗi được trả về:

lỗi: 'void Files::FileIndex::indexAll()' được bảo vệ
void FileIndex::indexAll()
^
[…].cpp:246:58: error: trong bối cảnh này
connect(&_timer, &QTimer::timeout, this, &FileIndex::indexAll);
^

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

Cú pháp kiểu "cũ" hoạt động vì tín hiệu được phát ra qua qt_static_metacall(..) chạy nó rồi Chỉ mục tệp thành viên và do đó có quyền truy cập được bảo vệ.

Cú pháp kiểu "mới" hoạt động được, nhưng vì lý do nàyNó sẽ không cho phép bạn trực tiếp lấy địa chỉ của phương thức lớp cha. Tuy nhiên, nó sẽ sử dụng chỉ mụcTất cả() địa chỉ "được kế thừa", vì vậy chỉ cần thay đổi mã thành:

connect(&_timer, &QTimer::timeout, this, &Derived::indexAll);

Về c++ - kết nối với các vị trí được bảo vệ trong các lớp dẫn xuất, 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/30001556/

27 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