ठीक तरह से, पूर्व box a = { { 1 } }
का प्रयोग करेंगे, ताकि आप प्रत्येक कुल के लिए ब्रेसिज़ में से एक सेट है। ब्रेसिज़ का बाहरी सेट संरचना के लिए है, और आंतरिक सेट सरणी के लिए है। हालांकि, भाषा आपको आंतरिक ब्रेसिज़ को छोड़ने की अनुमति देती है।
बाद में, छोड़ने के लिए कोई भीतरी ब्रेसिज़ नहीं है। आपको बाहरी ब्रेसिज़ को छोड़ने की अनुमति नहीं है; कुल मिलाकर प्रारंभकर्ताओं की सूची को अलग करने के लिए आपके पास कम से कम एक सेट ब्रेसिज़ होना चाहिए। एक अर्थ में, ब्रेसिज़ कहते हैं, "यहां कुल चीज़ों को रखने के लिए चीजों की एक सूची दी गई है।" जब आप box b = 2
लिखते हैं, तो संकलक यह नहीं जानता कि आप को के अंदर कुल रखना चाहते हैं। इसके बजाए, ऐसा लगता है कि आप b
ऑब्जेक्ट (इसके भाग के बजाए) को 2
पर प्रारंभ करने का प्रयास कर रहे हैं। इसलिए संकलक एक कन्स्ट्रक्टर या रूपांतरण खोजने की कोशिश करता है जो 2
को box
में बदल देता है। जब यह विफल हो जाता है, तो आपको एक त्रुटि मिलती है।
स्रोत
2013-07-29 13:57:44
यहां तक कि हमें int घोषित करने की अनुमति है: 'int i = {10};' –
@GrijeshChauhan: मैंने छोड़ा क्योंकि यह प्रासंगिक नहीं है और चर्चा को जटिल बनाता है। सवाल यह है कि हम ब्रेसिज़ को क्यों नहीं छोड़ सकते हैं, हम उन्हें क्यों नहीं जोड़ सकते हैं। और यह स्केलरों के लिए एक विशेष मामला है कि भाषा विनिर्देश अलग-अलग व्यवहार करता है, न कि योगों के नियमों का एक हिस्सा। –
धन्यवाद ग्रिजेश, मुझे यह नहीं पता था! –