Trong một file C++ header, tôi nhìn thấy mã này:C++ - ý nghĩa của một tuyên bố kết hợp typedef và typename
typedef typename _Mybase::value_type value_type;
Bây giờ, như tôi hiểu, trích dẫn từ «C++ Complete Reference» theo Schildt . typename
có thể được thay thế bằng lớp từ khóa, việc sử dụng thứ hai của typename
là thông báo cho trình biên dịch rằng tên được sử dụng trong khai báo mẫu là tên loại chứ không phải tên đối tượng.
Tương tự, bạn có thể xác định tên loại dữ liệu mới bằng cách sử dụng từ khóa typedef
. Bạn không phải là thực sự tạo loại dữ liệu mới, nhưng thay vì xác định tên mới cho loại hiện có.
Tuy nhiên, bạn có thể giải thích chính xác ý nghĩa của dòng mã trên không, trong đó typedef
và typename
được kết hợp với nhau. Và "::
" trong tuyên bố ngụ ý là gì?
'typename' có cùng sử dụng bên trong và bên ngoài' typedef'. Một ví dụ thực tế hơn (loại) có thể là 'typedef typename std :: vector :: iterator Iter;' –
chris
@chris chính xác những gì _Mybase :: value_type và value_type riêng biệt, và "_Mybase :: value_type value_type" đại diện? – Arvind
Và omg, Schildt đã trở lại. Đốt cuốn sách đó ngay bây giờ. – chris