2010-04-20 16 views
5

में एरे प्रारंभिकरण यह प्रश्न here पोस्ट से संबंधित है। क्या फ़ंक्शन कॉल या कन्स्ट्रक्टर कॉल में सरणी प्रारंभ करना संभव है? उदाहरण के लिए, कक्षा फू का कन्स्ट्रक्टर आकार 3 की सरणी चाहता है, इसलिए मैं foo ({0, 0, 0}) को कॉल करना चाहता हूं। मैंने यह कोशिश की है, और यह काम नहीं करता है। मैं अन्य ऑब्जेक्ट्स कन्स्ट्रक्टर प्रारंभिक सूचियों में प्रकार foo की ऑब्जेक्ट्स को प्रारंभ करने में सक्षम होना चाहता हूं, या पहले एक अलग सरणी बनाये बिना foo को प्रारंभ करना चाहता हूं। क्या यह संभव है?सी ++ फंक्शन कॉल या कंस्ट्रक्टर कॉल

+0

सबसे पहले आप सरणी प्रारंभिकरण के बारे में बात करते हैं, तो आपको क्लास ऑब्जेक्ट को intialize करने की आवश्यकता होती है। तो आपको इसे आरंभ करने की क्या आवश्यकता है: एक सरणी ऑब्जेक्ट या क्लास ऑब्जेक्ट? – AnT

+0

कक्षा शुरू करना एक विशिष्ट मामला है जिसे मैंने एक उदाहरण के रूप में उपयोग किया, और यही कारण है कि मैंने सवाल पूछा। हालांकि, आपके पास एक फ़ंक्शन फ़ू भी हो सकता है जो आकार 3 की सरणी लेता है और इसे इसे कॉल करना चाहता है: foo ({0, 0, 0})। मैंने इसे और अधिक स्पष्ट बनाने के लिए ओपी बदल दिया है। – david

+0

हां, लेकिन आप अभी भी पूछ रहे हैं "क्या इसे निर्दिष्ट किए बिना सरणी प्रारंभ करना संभव है?"। खैर, हाँ, यह संभव है। उदाहरण के लिए, 'int [10] = {5}' इसे बिना निर्दिष्ट किए सरणी को प्रारंभ करता है, जैसा आपने पूछा था। फिर भी, ऐसा लगता है कि आपको वास्तव में क्या दिलचस्पी दिखाई देती है। – AnT

उत्तर

5

वर्तमान मानक में नहीं। यह सी ++ 11

जीसीसी में आप एक डाली का प्रयोग कर एक अस्थायी के निर्माण के लिए मजबूर करने के कर सकते हैं, लेकिन यह मानक सी नहीं है ++ (C99) में संभव हो जाएगा:

typedef int array[2]; 
void foo(array) {} // Note: the actual signature is: void foo(int *) 
int main() { 
    foo((array){ 1, 2 } ); 
} 
+0

यह C99 में काम करता है, लेकिन नहीं में सी ++ 03 (न C++ 0x में - यह एक यौगिक शाब्दिक है)। –

+0

कोड ठीक है (मैकपोर्ट) जीसीसी तक 4.6 तक; जीसीसी 4.7 रिपोर्ट 'त्रुटि: अस्थायी सरणी का पता लेना'। –

+0

सी ++ 11 वर्तमान मानक है, इसलिए इस जवाब को अपडेट करना होगा। –

0

यदि आपका डिजाइन द्वारा अनुमति दी , आप कक्षा के अंदर डेटा को लपेटने पर विचार कर सकते हैं और डिफ़ॉल्ट कन्स्ट्रक्टर में 0 (या आपकी पसंद के किसी भी मूल्य)

संबंधित मुद्दे