Tôi đã đi qua một số mã trong CodeProject và đi qua mã sau đây cho đúc C++.Thực hiện C++ Cast
template <class OutputClass, class InputClass>
union horrible_union{
OutputClass out;
InputClass in;
};
template <class OutputClass, class InputClass>
inline OutputClass horrible_cast(const InputClass input){
horrible_union<OutputClass, InputClass> u;
u.in = input;
return u.out;
}
Tại sao dàn diễn viên được triển khai ở trên. Tại sao chúng ta không thể làm một dàn diễn viên thủ công. Ai đó có thể đưa ra một ví dụ về khi một diễn viên bình thường sẽ không hoạt động?
Truy cập một thành viên của liên minh sau khi đặt thành viên khác là hành vi không xác định, vì vậy mọi thứ tốt hơn phương pháp 'horrible_union' này. –
Có lẽ đó là lý do tại sao nó được đặt tên là diễn viên khủng khiếp. Đây là cơ bản để thực hiện một số hành vi cụ thể trình biên dịch. – KodeWarrior