क्या कोई उद्देश्य-सी सी ++ के गतिशील_कास्ट के बराबर है?उद्देश्य-सी गतिशील_कास्ट?
यह इस का उपयोग करते हुए नाटक किया जा सकता है:
MyClass *safeObject = [object isKindOfClass: [MyClass class]]
? (MyClass *)originalObject : nil;
लेकिन फिर भी अगर मैं इसे अक्सर टाइप करने के लिए की जरूरत नहीं है इस, टाइप करने के लिए कोड का एक बहुत कुछ है।
मैं कर रहा हूँ जंग लगी एक सा तो यह बिल्कुल सही नहीं हो सकता है, लेकिन मेरा मानना है कि C++ बराबर होगा:
MyClass safeObject = dynamic_cast<MyClass>(orginalObject);
संदर्भ यहाँ एक ब्लॉक जहां पैरामीटर एक का एक प्रकार के रूप में परिभाषित किया जाता है अधिक सामान्य वर्ग, लेकिन इस ब्लॉक में मैं "जानता हूं" यह एक विशिष्ट उप-वर्ग है। फिर भी, मैं इसे (MyClass *)originalObject
के साथ अंधाधुंध रूप से नहीं डालना चाहता हूं और सैद्धांतिक रूप से संभावित त्रुटि को अनदेखा कर सकता हूं।
स्पष्ट होने के लिए, जबकि मुझे dynamic_cast
पसंद आएगा, मैं इस मामले को सुरक्षित रूप से संभालने के लिए वैकल्पिक दृष्टिकोण से भी खुश हूं।
सबसे बुरे मामले में, आप इसके लिए एक मैक्रो लिख सकते हैं। – JustSid
उद्देश्य-सी बतख-टाइप किया गया है। काफी ईमानदारी से, "जटिल" कास्ट भाषा के खिलाफ थोड़ी रोइंग है। – zneak
हां, मुझे लगता है कि मैंने शायद यहां गलत सवाल पूछा है। * मुझे जो भी सवाल होना चाहिए * से पूछा गया था कि "केवल उपयोग करें" एनएसएएसएसर्ट ([ऑब्जेक्ट हैकिंडऑफ क्लास: [माई क्लास क्लास]], @ "ब्लहब्लह") का जवाब था, क्योंकि आप इसे वैसे भी उम्मीद नहीं कर रहे हैं। :) –