Bỏ qua câu hỏi đóng, "làm thế nào để tôi chuyển đổi thành loại Test::A
" thay vì cứng nhắc về yêu cầu phải có một diễn viên trong đó, và trả lời muộn vài năm chỉ là câu hỏi phổ biến mà không ai khác có thể đề cập đến thay thế , theo tiêu chuẩn C ++ 11:
5.2.9 Diễn viên tĩnh
... một biểu thức e
có thể được chuyển đổi rõ ràng thành một loại T
bằng cách sử dụng một static_cast
biểu mẫu static_cast<T>(e)
nếu khai báo
T t(e);
được định dạng tốt, đối với một số biến tạm thời được phát minh t
(8,5). Hiệu quả của việc chuyển đổi rõ ràng như vậy giống như thực hiện khai báo và khởi tạo và sau đó sử dụng biến tạm thời làm kết quả của chuyển đổi.
Do đó, trực tiếp sử dụng biểu mẫu t(e)
cũng sẽ hoạt động và bạn có thể thích nó cho gọn gàng:
auto result = Test(a);