संभव डुप्लिकेट:
Aliasing `T*` with `char*` is allowed. Is it also allowed the other way around?क्या यह std :: सरणी अपरिभाषित व्यवहार का उपयोग है?
मैं अज्ञात आदिम प्रकार है, जो कोई 10 से अधिक बाइट लंबा है, इसलिए तरह के एक मूल्य धारण करने के लिए एक char
की std::array
रों उपयोग कर रहा हूँ:
std::array<char, 10> val;
*reinterpret_cast<double*>(val.data()) = 6.3;
//blah blah blah...
double stuff = *reinterpret_cast<double*>(val.data());
मैंने पढ़ा है कि char *
के माध्यम से पीछे और पीछे कास्टिंग नहीं है ndefined, क्योंकि संकलक char *
मानता है किसी भी प्रकार का मान उपनाम कर सकता है। क्या यह तब भी काम करता है जब ऑब्जेक्ट के अंदर char
एस की एक सरणी (मान मुझे क्या लगता है) में रखा गया है?
नोट: मुझे पता है कि मैं यहां एक संघ का उपयोग कर सकता हूं, लेकिन इसके परिणामस्वरूप मैं जो कर रहा हूं उसके लिए बड़ी संख्या में बॉयलरप्लेट कोड होगा, और यदि आवश्यक हो तो मैं इससे बचना चाहूंगा, इसलिए सवाल।
अलग सवाल, एक ही जवाब। – Dan
वही प्रश्न, अलग-अलग शब्द। ; -] – ildjarn