c++ - Casting POD object with static_cast -


यह वही है जो मेरा मतलब है,

  class v3 {public: float x, y, z; }; वर्ग V3_ {सार्वजनिक: फ्लोट एक्स, वाई, जेड; }; V3_ vec1; वी 3 vec2 = स्थिर_का & lt; वी 3_ & gt; (वीसी 1);   

मुझे इस कलाकार को समयबद्ध करने में काम करने के लिए क्या करना चाहिए?

धन्यवाद।

संपादित करें:

वहां मुझे क्या करना है, इसके बारे में कुछ गलतफहमी है। मैं रूपांतरण के लिए एक ऑपरेटर लिख सकता हूं, लेकिन मैं इसे संकलन के समय में करना चाहता हूं।

यहां वेक्टर 3 के दो कार्यान्वयन हैं जो static_cast की अनुमति देता है मुझे नहीं पता कि यह कैसे काम करता है, लेकिन यह काम करता है।

मैं यह कलाकार कर सकता हूँ

  शून्य डायनेमिकबॉडी :: सेटलाइनरममेंन्टम (कॉन्स्ट वेक्टर 3 एंड वील) (बॉडी-> सेटलाइनरममेंन्टम (स्टेटिक_कास्ट एंड लेफ्टिनेट; एनएक्सओग्रे :: वीएसी 3 & gt; (वीएल)); }   

मैं यह कैसे कर सकता हूँ पर एक स्पष्टीकरण चाहूंगा।

संपादित करें:

आगे की जांच के बाद मैंने पाया कि यह कैसे वास्तव में करता है, यह कॉल करता है

  टेम्पलेट & lt; class user_xyz_vector_type & gt; इनलाइन user_xyz_vector_type के रूप में () const {...}   

यह एक वास्तविक static_cast नहीं है, लेकिन संकलक इसे एक के रूप में स्वीकार करता है। मैं सचमुच आशा करता था कि प्रत्येक के लिए फ्लाइट कास्टिंग करना एक वास्तविक वस्तु थी।

यह कलाकार किसी भी समय काम नहीं करेगा। आप static_cast पूरी तरह से असंबंधित नहीं कर सकते हैं और एक दूसरे के लिए परिवर्तनीय प्रकार नहीं कर सकते हैं।

मुझे यकीन नहीं है कि आप क्या करने की कोशिश कर रहे हैं, इसलिए मैं नहीं जानता कि यह काम क्या है "काम" का अर्थ इस मामले में है, लेकिन एक कच्चे स्मृति स्तर पर रूपांतरण reinterpret_cast

  V3 vec2 = reinterpret_cast   

लेकिन यह एक बदसूरत हैक है जो काम करने की गारंटी नहीं है, क्योंकि फिर से, आपके प्रकार असंबंधित हैं। सफलता की समान डिग्री (या इससे भी बेहतर) के साथ आप बस एक कोड को दूसरे में memcpy कर सकते हैं।

Comments