Tôi đã lưu một con trỏ tới một đối tượng type_info
.Làm cách nào để tạo kiểu chữ với type_info?
int MyVariable = 123;
const std::type_info* Datatype = &typeid(MyVariable);
Tôi có thể sử dụng điều này để định kiểu biến khác cho loại đó như thế nào? Tôi cố gắng này, nhưng nó không hoạt động:
std::cout << ((*Datatype)3.14) << std::endl;
Sử dụng các hình thức chức năng của typecasting không làm việc, hoặc là:
std::cout << (*Datatype(3.14)) << std::endl;
Nếu bạn sử dụng kiểu C hoặc reinterpret_cast bạn nhận được cùng một vấn đề, vì vậy tôi không nghĩ rằng đó là một đối số hợp lệ. –
@Mark Ransom Kết quả của một trong hai loại dàn diễn viên đó là * được biết tại thời gian biên dịch *. Nội dung của '* DataType' có thể thay đổi theo thời gian chạy. –
vào thời điểm đó tôi nghĩ rằng chúng tôi đồng ý và tôi đã nói nhiều trong câu trả lời của tôi. Trường hợp tôi không đồng ý là vấn đề mất kiểm tra kiểu sẽ là một lý do cho việc này không hoạt động. Nếu bạn gán một 'foo *' vào một 'bar *' và gọi một phương thức trên nó, bạn có thể gọi một cuộc gọi hàm không thực sự tồn tại - hôm nay, bằng cách sử dụng các phôi mà tôi đã đề cập. –