คำถามติดแท็ก reinterpret-cast

4
ฉันควรใช้ static_cast หรือ reinterpret_cast เมื่อทำการโมฆะ * ไปยังสิ่งใด
ทั้ง static_cast และ reinterpret_cast ดูเหมือนจะทำงานได้ดีในการคัดเลือกโมฆะ * ไปยังตัวชี้ประเภทอื่น มีเหตุผลที่ดีที่จะสนับสนุนอีกฝ่ายหรือไม่?

2
การเปลี่ยนแปลงเกี่ยวกับชุดรูปแบบการสะกดคำแบบพิมพ์: การสร้างสิ่งเล็กน้อยในสถานที่
ฉันรู้ว่านี่เป็นเรื่องที่ค่อนข้างทั่วไป แต่เท่าที่ UB ทั่วไปหาได้ง่ายฉันไม่พบตัวแปรนี้จนถึงตอนนี้ ดังนั้นฉันจึงพยายามแนะนำวัตถุพิกเซลอย่างเป็นทางการในขณะที่หลีกเลี่ยงการคัดลอกข้อมูลจริง ถูกต้องหรือไม่ struct Pixel { uint8_t red; uint8_t green; uint8_t blue; uint8_t alpha; }; static_assert(std::is_trivial_v<Pixel>); Pixel* promote(std::byte* data, std::size_t count) { Pixel * const result = reinterpret_cast<Pixel*>(data); while (count-- > 0) { new (data) Pixel{ std::to_integer<uint8_t>(data[0]), std::to_integer<uint8_t>(data[1]), std::to_integer<uint8_t>(data[2]), std::to_integer<uint8_t>(data[3]) }; data += sizeof(Pixel); } return result; …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.