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

c++ - nạp chồng mẫu hàm - chuyên môn hóa

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 00:43:21 26 4
mua khóa gpt4 Nike

theo Ngôn ngữ lập trình C++, Phiên bản đặc biệt,Bjarne Stroustrup, Mục 13.3.2:

mẫu T sqrt(T);
mẫu phức tạp sqrt(phức tạp);

void f(phức tạp z)
{
sqrt(z); // sqrt(phức tạp<>
}

Ông nói rằng mặc dù cả hai mẫu đều là ứng cử viên hợp lệ, nhưng mẫu thứ hai,sqrt(phức tạp)Sẽ được ưu tiên hơn mẫu đầu tiên vì đây là mẫu chuyên nghiệp nhất.

Trình biên dịch đáng kính của tôi,gcc phiên bản 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04)Có vẻ không đồng tình:

ft.cpp: Trong hàm 'void f(std::complex)':
ft.cpp:28:11: error: cuộc gọi quá tải 'sqrt(std::complex&)' không rõ ràng
sqrt(z);
^
ft.cpp:28:11: lưu ý: ứng viên là:
ft.cpp:9:21: lưu ý: T sqrt(T) [với T = std::complex]
mẫu T sqrt(T);
^
ft.cpp:10:30: lưu ý: std::complex<_Tp> sqrt(std::complex<_Tp>) [với T = double]
mẫu phức tạp sqrt(phức tạp);
^

Tôi có làm gì sai không (mặc dù tôi đã sao chép ký tự mã ký tự)? Hoặc việc triển khai trình biên dịch của tôi có sai không?

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

Thông báo lỗi đầy đủ tiết lộ một ứng cử viên:

/usr/local/include/c++/5.3.0/complex:894:5: lưu ý: ứng cử viên: std::complex<_Tp> std::sqrt(const std::complex<_Tp>&) [với _Tp = double ]

tức là nằm ở tiêu chuẩn Cái trong không gian tên, tức là. std::sqrt std::phức tạp của tình trạng quá tải. Vì bạn đang sử dụng tên không đủ tiêu chuẩn nên các quy tắc tra cứu được mở rộng để bao gồm đối số lệnh gọi hàm ( ADL) để tìm kiếm các hàm trong không gian tên. Giải pháp như sau:

Tùy chọn số 1

Thay đổi mét vuông Tên của hàm sao cho nó không xung đột với bất kỳ hàm nào trong thư viện chuẩn.

Tùy chọn số 2

Sử dụng tên đủ điều kiện khi tham chiếu các chức năng của bạn:

::sqrt(z);

Tùy chọn số 3

Vô hiệu hóa ADL bằng cách sử dụng dấu ngoặc đơn:

(sqrt)(z);

Về c++ - nạp chồng mẫu hàm - chuyên môn hóa, 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/35379422/

26 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