Vì vậy, tôi đã được đọc những câu trả lời cho dynamic_cast from "void *" và mặc dù bạn không thể đúc từ một void *
đến một T *
số các phản ứng chỉ ra rằng nó có thể cast một T *
đến một void *
, nhưng không đưa ra bất cứ dấu hiệu tại sao bạn muốn làm điều đó.Tại sao tôi nên sử dụng dynamic_cast để truyền tới khoảng trống *?
Đây có phải là một chút thông tin có thể xảy ra hoặc có trường hợp nào hợp lý không? Tôi nghĩ về có thể cho dễ đọc hoặc để làm cho nó rõ ràng rằng chúng tôi đang chuyển đổi sang một void *
, nhưng với mục đích của dynamic_cast
, nó không phù hợp rất tốt với tôi.
Vì lý do đó, có lý do gì để làm bất cứ điều gì khác ngoài việc để T *
trở thành void *
hoàn toàn không? Tôi đã nhìn thấy phôi kiểu C đến void *
được sử dụng theo thời gian cho mục đích này, tôi giả sử chỉ để được rõ ràng (giả sử chúng tôi không làm một cái gì đó bất thường như đúc int
cho một con trỏ hoặc một cái gì đó).
Theo như tôi có thể biết, kết quả của việc sử dụng dynamic_cast() và sử dụng chuyển đổi ẩn để void * luôn trả về cùng một kết quả nếu loại nguồn là đa hình. Tôi cho rằng bạn có thể sử dụng nó như một static_assert (is_polymophic (x)), nhưng tôi thực sự không thể nghĩ ra một lý do chính đáng để làm điều đó. –